blob: dc9cb63cce53f2ac4c342424d137afc9cb71beac [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) {
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
}