| # 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" ] |
| } |
| } |