| # Copyright 2018 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/testing/test_spec.gni") |
| |
| # This declares a test executable. |
| # |
| # The parameters are precisely those of an `executable`, along with |
| # |
| # environments |
| # Optional: What environments this test should target. Only used here for |
| # linux and mac tests, with a default value of a general linux/mac |
| # environment (as a function of $current_os). |
| # See //build/testing/test_spec.gni for more details. |
| # |
| template("test") { |
| if (is_linux || is_mac) { |
| test_spec("${target_name}_spec") { |
| testonly = true |
| name = invoker.target_name |
| target = invoker.target_name |
| path = "$root_out_dir/${invoker.target_name}" |
| deps = [] |
| if (defined(invoker.deps)) { |
| deps += invoker.deps |
| } |
| if (defined(invoker.data_deps)) { |
| deps += invoker.data_deps |
| } |
| forward_variables_from(invoker, [ "environments" ]) |
| } |
| } else { |
| if (defined(invoker.environments)) { |
| not_needed(invoker, [ "environments" ]) |
| } |
| } |
| |
| executable(target_name) { |
| # TODO(3367): remove `test_group` once all ZN tests are using test packages |
| # instead. |
| forward_variables_from(invoker, "*", [ "test_group" ]) |
| # TODO(3367): always force `testonly` once all ZN tests are moved to |
| # packages. |
| if (!defined(testonly)) { |
| testonly = true |
| } |
| if (is_linux || is_mac) { |
| deps += [ ":${target_name}_spec" ] |
| } |
| |
| if (!defined(output_dir)) { |
| output_dir = root_out_dir |
| } |
| if (!defined(output_name)) { |
| output_name = target_name |
| } |
| if (!defined(output_extension)) { |
| output_extension = "" |
| } |
| |
| _output_name = output_name |
| if (output_extension != "") { |
| _output_name += ".$output_extension" |
| } |
| _output_file = rebase_path("$output_dir/$_output_name", root_build_dir) |
| if (defined(invoker.test_group)) { |
| _test_group = invoker.test_group |
| } else { |
| _test_group = "sys" |
| } |
| |
| metadata = { |
| migrated_manifest_lines = [ |
| "test/$_test_group/$_output_name=$_output_file", |
| ] |
| } |
| } |
| } |
| |
| set_defaults("test") { |
| configs = default_executable_configs |
| } |