| # Copyright 2023 The Fuchsia Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| import("//build/compiled_action.gni") | |
| import("//build/testing/golden_files.gni") | |
| # Runs testgen and verifies the output matches a set of golden files. | |
| template("testgen_golden_files") { | |
| assert(defined(invoker.comparisons)) | |
| assert(defined(invoker.testgen)) | |
| testgen = invoker.testgen | |
| assert(defined(testgen.test_root)) | |
| assert(defined(testgen.args)) | |
| assert(defined(testgen.label)) | |
| assert(defined(testgen.inputs)) | |
| assert(defined(testgen.outputs)) | |
| main_target_name = target_name | |
| action("${target_name}_generate_test") { | |
| forward_variables_from(testgen, | |
| [ | |
| "inputs", | |
| "outputs", | |
| ]) | |
| _binary_root = get_label_info(testgen.label, "root_out_dir") | |
| _binary_name = get_label_info(testgen.label, "name") | |
| _binary = "$_binary_root/$_binary_name" | |
| script = "//tools/testgen/build/gn_testgen.sh" | |
| inputs += [ _binary ] | |
| args = [ | |
| rebase_path(testgen.test_root, root_build_dir), | |
| rebase_path(_binary, root_build_dir), | |
| ] + testgen.args | |
| deps = [ testgen.label ] | |
| } | |
| golden_files("${target_name}_golden_files") { | |
| testonly = true | |
| deps = [ ":${main_target_name}_generate_test" ] | |
| comparisons = invoker.comparisons | |
| } | |
| group(main_target_name) { | |
| testonly = true | |
| deps = [ ":${target_name}_golden_files" ] | |
| } | |
| } |