| # Copyright 2022 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/components.gni") |
| import("//build/components/fuchsia_package_archive.gni") |
| |
| # Declares a CTF test that should be included in the next CTF release. |
| # |
| # This template generates the metadata for this test's CTF test manifest entry |
| # and the list of artifacts to store in the CTF release. |
| # |
| # The test manifest is a JSON list of objects. Each test's object has the |
| # following properties: |
| # |
| # archive_name (string) |
| # The basename to use for the FAR archive. |
| # |
| # package_name (string) |
| # The name to give the package within the FAR archive. |
| # |
| # component_name (string) |
| # The name of the test component inside the package, including the .cm |
| # suffix. |
| # |
| # log_settings (object) |
| # Fuchsia platform-specific log settings for when this test is run in |
| # CI/CQ in the future. End users outside the Fuchsia platform can |
| # ignore this field. |
| # |
| # plasa_element (string) |
| # The ID of the plasa element that is tested by this test. This should be |
| # unique among all CTF tests (although this is not checked) and follow the |
| # syntax: <api_kind>/<elem>. The API kind serves as a namespace for elem |
| # and clarifies which plasa element elem refers to. Defaults to the empty |
| # string. |
| # |
| # If api_kind is "fidl", <elem> must be the name of a FIDL protocol member. |
| # For example: "fidl/fuchsia.diagnostics/ArchiveAccessor". |
| # TODO(kjharland): Explain the usage for shared libraries. |
| # |
| # Parameters |
| # |
| # archive_name (required) |
| # See 'archive_name' from above. |
| # Type: string |
| # |
| # component_name (required) |
| # See 'component_name' from above. |
| # Type: string |
| # |
| # log_settings (optional) |
| # See 'log_settings' from above. |
| # Type: scope |
| # |
| # package (required) |
| # The label of the Fuchsia package containing the CTF test component. |
| # The package must be declared earlier in the same BUILD file. |
| # Type: label |
| # |
| # package_name (required) |
| # See 'package_name' from above. |
| # Type: string |
| # |
| # plasa_element (required) |
| # See 'plasa_element' from above. |
| # Type: string |
| template("ctf_test_release_archive") { |
| assert(defined(invoker.plasa_element), "plasa_element is required") |
| assert(defined(invoker.package), "package is required") |
| assert(defined(invoker.package_name), "package_name is required") |
| assert(defined(invoker.archive_name), "archive_name is required") |
| assert(defined(invoker.component_name), "component_name is required") |
| |
| fuchsia_package_archive_target = "${target_name}_archive" |
| fuchsia_package_archive(fuchsia_package_archive_target) { |
| testonly = true |
| package = invoker.package |
| archive_name = invoker.archive_name |
| } |
| |
| copy_target = "${target_name}_copy" |
| copy(copy_target) { |
| testonly = true |
| sources = get_target_outputs(":$fuchsia_package_archive_target") |
| outputs = [ "$root_out_dir/cts/{{source_file_part}}" ] |
| deps = [ ":$fuchsia_package_archive_target" ] |
| } |
| |
| group(target_name) { |
| testonly = true |
| deps = [ ":$copy_target" ] |
| |
| metadata = { |
| _ctf_artifacts = get_target_outputs(":$copy_target") |
| ctf_artifacts = rebase_path(_ctf_artifacts, root_out_dir) |
| test_manifest = [ |
| { |
| archive_name = invoker.archive_name |
| component_name = invoker.component_name |
| package_name = invoker.package_name |
| plasa_element = invoker.plasa_element |
| gn_label = get_label_info(invoker.package_name, "label_no_toolchain") |
| if (defined(invoker.log_settings)) { |
| log_settings = invoker.log_settings |
| } |
| }, |
| ] |
| } |
| } |
| } |