# Copyright 2024 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be found # in the LICENSE file. # The crosier_tests template is used to define crosier test targets in # subdirectories. They should be in the dependency chain of the top-level # chromeos_integration_tests target. # # crosier_tests behaves like source_set except that it supports (and expects) a # "sources_metadata" variable that lists the yaml metadata files corresponding # to the test sources. These files will be copied to the appropriate directory. # See docs/testing/chromeos_integration/crosier_metadata.md for details. import("//build/config/chromeos/ui_mode.gni") template("crosier_tests") { assert(is_chromeos_device) assert(defined(invoker.sources), "Need sources in $target_name listing the C++ files.") assert(defined(invoker.sources_metadata), "Need sources_metadata in $target_name listing the yaml files.") _have_metadata = invoker.sources_metadata != [] source_set(target_name) { forward_variables_from(invoker, "*", [ "sources_metadata" ]) testonly = true if (defined(defines)) { defines += [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] } else { defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] } if (_have_metadata) { if (defined(data_deps)) { data_deps += [ ":${target_name}_metadata" ] } else { data_deps = [ ":${target_name}_metadata" ] } } } if (_have_metadata) { copy("${target_name}_metadata") { testonly = true sources = invoker.sources_metadata outputs = [ "$root_out_dir/crosier_metadata/{{source_file_part}}" ] } } }