| # 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) { |
| _output_name = target_name |
| if (defined(invoker.output_name)) { |
| _output_name = invoker.output_name |
| } |
| _output_dir = root_out_dir |
| if (defined(invoker.output_dir)) { |
| _output_dir = invoker.output_dir |
| } |
| test_spec("${target_name}_spec") { |
| target = ":${invoker.target_name}" |
| path = "$_output_dir/$_output_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) { |
| original_target_name = target_name |
| forward_variables_from(invoker, "*") |
| testonly = true |
| |
| if (is_linux || is_mac) { |
| deps += [ ":${target_name}_spec" ] |
| } |
| |
| if (is_fuchsia) { |
| 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) |
| |
| metadata = { |
| # Used by the distribution_manifest template. |
| distribution_entries = [ |
| { |
| source = _output_file |
| destination = "test/$_output_name" |
| label = |
| get_label_info(":$original_target_name", "label_with_toolchain") |
| }, |
| ] |
| } |
| } else { |
| not_needed([ "original_target_name" ]) |
| } |
| } |
| } |
| |
| set_defaults("test") { |
| configs = default_executable_configs |
| } |