blob: 135b96ab0dc07924f7eb89ec025a8754d967c6d1 [file] [log] [blame]
# Copyright 2019 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/packages/prebuilt_package.gni")
import("//build/testing/test_spec.gni")
# Describes a prebuilt package of tests.
#
# Parameters
#
# archive (required)
# [string] Path to archive containing a package.
#
# package (optional)
# [string] Name of the package.
#
# component_name (required)
# [string] Component name to test.
#
# runner (required)
# [string] The runner used to execute the test(run|run_test_component).
#
# environments (optional, default: [ { dimensions = { device_type = "QEMU" } } ])
# [list of scopes] Device environments in which the test should run.
#
# Environment scope is defined in //build/testing/test_spec.gni
#
# deps (optional)
# [list of labels]: List of labels that the test depends on.
#
template("prebuilt_test_package") {
assert(defined(invoker.archive), "archive must be defined.")
assert(defined(invoker.component_name), "component_name must be defined.")
assert(defined(invoker.runner), "runner must be defined.")
package_name = target_name
if (defined(invoker.package)) {
package_name = invoker.package
}
package_deps = []
if (invoker.runner == "run") {
package_deps += [ "//garnet/packages/prod:run" ]
} else if (invoker.runner == "run_test_component") {
package_deps += [ "//garnet/packages/testing:run_test_component" ]
} else {
assert(
false,
"unexpected runner \"${invoker.runner}; must be one of \"run\" or \"run_test_component\"")
}
main_target_name = target_name
spec_target_name = "${target_name}_${invoker.component_name}_spec"
test_spec(spec_target_name) {
name = main_target_name
target = main_target_name
package_url = "fuchsia-pkg://fuchsia.com/${package_name}#meta/${invoker.component_name}.cmx"
command = [
"${invoker.runner}",
package_url,
]
forward_variables_from(invoker,
[
"deps",
"environments",
])
}
package_deps += [ ":$spec_target_name" ]
prebuilt_package(target_name) {
package_name = package_name
testonly = true
archive = invoker.archive
deps = package_deps
}
}