blob: a9d4ac6746e6e5cb5be8208236916c433119a602 [file] [log] [blame] [edit]
# 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("//build/config/build_api_module.gni")
import("//build/subbuild.gni")
import("//build/testing/golden_files.gni")
import("//sdk/ctf/build/ctf.gni")
import("//sdk/ctf/build/ctf_api_level.gni")
import("//sdk/ctf/build/ctf_output_directory.gni")
generated_file("ctf_artifacts_source_list") {
testonly = true
outputs = [ "$root_out_dir/ctf_artifacts_source_list.json" ]
output_conversion = "json"
data_keys = [ "ctf_artifacts" ]
walk_keys = [ "ctf_barrier" ]
deps = [
":ctf_subbuild",
":host_test_manifest",
"tests:e2e_tests",
]
metadata = {
# Used by the //:ctf_artifacts_path build API module
ctf_artifacts_path =
[ rebase_path("$root_out_dir/ctf_release/ctf_artifacts.json",
root_build_dir) ]
}
}
# A file that contains the path to the ctf_artifacts manifest, used
# by infra scripts to locate the latter.
build_api_module("ctf_artifacts_path") {
testonly = true
data_keys = [ "ctf_artifacts_path" ]
deps = [ ":ctf_artifacts" ]
}
# Generates a manifest of CTF release artifacts to upload to remote storage.
action("ctf_artifacts") {
testonly = true
_output_json = "$root_out_dir/ctf_release/ctf_artifacts.json"
outputs = [ _output_json ]
deps = [ ":ctf_artifacts_source_list" ]
script = "copy_ctf_artifacts.py"
_dep_outputs = get_target_outputs(deps[0])
sources = _dep_outputs
depfile = "$target_out_dir/ctf_artifacts.json.d"
args = [
"--artifacts_json",
rebase_path(_dep_outputs[0], root_out_dir),
"--output_manifest",
rebase_path(outputs[0], root_out_dir),
"--depfile",
rebase_path(depfile, root_out_dir),
]
}
group("ctf") {
testonly = true
deps = [
":check_test_templates",
":ctf_artifacts",
":golden_files",
":manifests",
":tests",
]
}
group("manifests") {
testonly = true
deps = [
":host_test_manifest",
":package_archive_manifest",
]
}
subbuild("ctf_subbuild") {
testonly = true
# TODO(https://fxbug.dev/42070336): Change this to build manifest when it builds cleanly
target = "//sdk/ctf:package_archive_manifest"
outputs = [ "/cts/package_archives.json" ]
api_level = ctf_api_level
target_cpu = target_cpu
build_dir_prefix = ctf_output_directory
extra_deps = [
"//sdk/ctf/tests:ctf-tests", # Catch changes in source tests.
]
metadata = {
ctf_artifacts = [ "${ctf_output_directory}/cts/package_archives.json" ]
}
}
group("tests") {
testonly = true
deps = [
":ctf_subbuild",
"build/scripts:tests",
"tests",
"tests:e2e_tests",
]
}
generated_file("package_archive_manifest") {
testonly = true
outputs = [ "$root_out_dir/cts/package_archives.json" ]
output_conversion = "json"
data_keys = [ "package_archives" ]
walk_keys = [ "ctf_barrier" ]
deps = [ "tests:ctf-tests" ]
metadata = {
ctf_artifacts = rebase_path(outputs, root_build_dir)
}
}
generated_file("host_test_manifest") {
testonly = true
outputs = [ "$root_out_dir/cts/host_test_manifest.json" ]
output_conversion = "json"
data_keys = [ "host_test_manifest" ]
deps = [ "tests/examples/host_tool:tests($host_toolchain)" ]
metadata = {
ctf_artifacts = [ "cts/host_test_manifest.json" ]
}
}
generate_ctf_tests("check_test_templates") {
api_level = "_in_development"
manifest = "//sdk/ctf/goldens/package_archives.json"
use_prebuilts_from_current_build = true
deps = [ ":package_archive_manifest" ]
}
golden_files("golden_files") {
testonly = true
deps = [ ":package_archive_manifest($target_toolchain)" ]
comparisons = []
foreach(dep, deps) {
_outputs = []
_outputs = get_target_outputs(dep)
_candidate = _outputs[0]
comparisons += [
{
golden = "//sdk/ctf/goldens/" + get_path_info(_candidate, "file")
candidate = _candidate
},
]
}
}
# Tests that we want to run in an FYI builder.
# We do not want failures from these tests to break the tree.
group("fyi") {
testonly = true
deps = []
}