| # 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. | 
 |  | 
 | # Tests for the GN SDK contents. | 
 |  | 
 | import("//build/go/go_test.gni") | 
 |  | 
 | # GN SDK inputs and outputs | 
 | # | 
 | # Parameters | 
 | # | 
 | #   output_dir (required) | 
 | #     The directory where the GN SDK will be written. | 
 | # | 
 | #   archive (optional) | 
 | #     Path to IDK/core SDK tar archive to be used as a base for the GN SDK. | 
 | #     Defaults to ${root_out_dir}/sdk/archive/core.tar.gz | 
 | # | 
 | #   test_workspace (optional) | 
 | #     The directory where the GN SDK's test workspace will be written. | 
 | #     Defaults is to not write/generate a test workspace. | 
 | # | 
 | #   output_archive (optional) | 
 | #     Path to the file where a tarball of the GN SDK will be written. | 
 | #     Defaults to not write/generate a GN SDK tarball. | 
 | # | 
 | # Outputs | 
 | # | 
 | #   GN SDK | 
 | #     Writes the contents of the GN SDK to the directory specified in | 
 | #     the output_dir parameter above. | 
 | # | 
 | #   Test workspace | 
 | #     Writes the contents of a GN SDK test workspace to the directory | 
 | #     specified in the test_workspace parameter above. This workspace | 
 | #     contains the GN SDK, test assets and tests which can be run by | 
 | #     running the `run.py` script located in the root of the workspace. | 
 | # | 
 | #   GN SDK tarball | 
 | #     Writes the contents of a GN SDK to a tarball to the path specified in | 
 | #     the output_archive parameter above. | 
 |  | 
 | # This template is for local building only and will not work in CQ | 
 | template("gn_sdk") { | 
 |   testonly = true | 
 |   action("${target_name}") { | 
 |     script = "//scripts/sdk/gn/generate.py" | 
 |     outputs = [ "${invoker.output_dir}/BUILD.gn" ] | 
 |     args = [ | 
 |       "--archive", | 
 |  | 
 |       # This rule requires the`build_sdk_archives` GN arg to be set to `true` | 
 |       # which will create a IDK/core SDK archive in | 
 |       # `${root_out_dir}/sdk/archive/core.tar.gz`. | 
 |       # to set the GN arg `build_sdk_archives` to true add | 
 |       # `--args="build_sdk_archives=true"` to your `gn` or `fx set` command. | 
 |       # for example: | 
 |       #   `fx set core.x64 --with //scripts/sdk/gn:gn_sdk_test_workspace --args="build_sdk_archives=true"` | 
 |       rebase_path("${root_out_dir}/sdk/archive/core.tar.gz"), | 
 |       "--output", | 
 |       rebase_path(invoker.output_dir), | 
 |     ] | 
 |     if (defined(invoker.test_workspace)) { | 
 |       args += [ | 
 |         "--tests", | 
 |         rebase_path(invoker.test_workspace), | 
 |       ] | 
 |     } | 
 |     if (defined(invoker.output_archive)) { | 
 |       args += [ | 
 |         "--output-archive", | 
 |         rebase_path(invoker.output_archive), | 
 |       ] | 
 |     } | 
 |     if (defined(invoker.archive)) { | 
 |       args += [ | 
 |         "--archive", | 
 |         rebase_path(invoker.archive), | 
 |       ] | 
 |     } | 
 |     if (defined(invoker.directory)) { | 
 |       args += [ | 
 |         "--directory", | 
 |         rebase_path(invoker.directory), | 
 |       ] | 
 |     } | 
 |     deps = [ "//sdk:core($target_toolchain)" ] | 
 |   } | 
 | } | 
 |  | 
 | # This build rule will only work in a local checkout and will not work in CQ | 
 | # To build this rule run | 
 | #   fx set core.x64 --with //scripts/sdk/gn:gn_sdk_test_workspace --args="build_sdk_archives=true" | 
 | #   fx build | 
 | gn_sdk("gn_sdk_test_workspace") { | 
 |   output_dir = "${root_out_dir}/sdk/gn/fuchsia-sdk" | 
 |   test_workspace = "${root_out_dir}/test_sdk/gn/test_workspace" | 
 | } | 
 |  | 
 | # Only build this for host targets | 
 | if (is_linux || is_mac) { | 
 |   # Wrapper for running the Python unit tests | 
 |   go_test("host_gn_sdk_test") { | 
 |     gopackages = [ "gnsdktest" ] | 
 |     deps = [ "test:host_gnsdk_test_lib" ] | 
 |     args = [ "-testscript=" + rebase_path("test_generate.py") ] | 
 |   } | 
 | } | 
 |  | 
 | # This group is included as part of CQ | 
 | group("tests") { | 
 |   testonly = true | 
 |   public_deps = [ "bash_tests:tests" ] | 
 | } | 
 |  | 
 | # This group is tests that can be run locally by a developer | 
 | group("local_tests") { | 
 |   testonly = true | 
 |   public_deps = [ ":host_gn_sdk_test($host_toolchain)" ] | 
 | } |