blob: cbe1a60c4ad7acbec7551327541428e40023b271 [file] [log] [blame]
# 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
}