|  | # Copyright 2020 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("//sdk/cts/build/cts_element.gni") | 
|  | import("//sdk/cts/build/cts_vars.gni") | 
|  | import("//src/sys/build/components.gni") | 
|  |  | 
|  | # Defines a Compatibility Test Suite package. | 
|  | # | 
|  | # An equivalent to fuchsia_test_package, but ensures dependencies and | 
|  | # test_components are allowed in CTS. | 
|  | # | 
|  | # Example: | 
|  | # ``` | 
|  | # cts_fuchsia_test_package("my-test-package") { | 
|  | #   test_components = [ ":my-test-component" ] | 
|  | # } | 
|  | # ``` | 
|  | template("cts_fuchsia_test_package") { | 
|  | # Ensure that deps and test_components are CTS targets. | 
|  | invoker_deps = [] | 
|  | if (defined(invoker.deps)) { | 
|  | invoker_deps += invoker.deps | 
|  | } | 
|  | if (defined(invoker.test_components)) { | 
|  | invoker_deps += invoker.test_components | 
|  | } | 
|  | if (invoker_deps != []) { | 
|  | cts_element("${target_name}_verify_deps") { | 
|  | deps = invoker_deps | 
|  | invoker_label = get_label_info(invoker.target_name, "label_no_toolchain") | 
|  | } | 
|  | } | 
|  |  | 
|  | fuchsia_test_package(target_name) { | 
|  | forward_variables_from(invoker, "*") | 
|  | if (invoker_deps != []) { | 
|  | if (defined(deps)) { | 
|  | deps += [ ":${target_name}_verify_deps" ] | 
|  | } else { | 
|  | deps = [ ":${target_name}_verify_deps" ] | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | # Creates a file to enable other CTS targets to depend on this test package. | 
|  | target_build_dir = get_label_info(":$target_name", "dir") | 
|  | target_build_dir = string_replace(target_build_dir, "//", "/") | 
|  | write_file( | 
|  | "${root_build_dir}/cts/${target_build_dir}/${target_name}.${cts_extension}", | 
|  | true) | 
|  | } |