| # Copyright 2023 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/host.gni") |
| import("//build/python/python_binary.gni") |
| import("//build/python/python_host_test.gni") |
| |
| assert(is_host) |
| |
| binary_sources = [ |
| "command.py", |
| "command_runner.py", |
| "execution_params.py", |
| "params.py", |
| ] |
| |
| binary_deps = [] |
| |
| python_binary("host_test_component_runner") { |
| enable_mypy = true |
| testonly = true |
| main_source = "main.py" |
| sources = binary_sources + [ "main.py" ] |
| deps = binary_deps |
| } |
| |
| main_module_tests = [ |
| "params", |
| "execution_params", |
| "command", |
| "command_runner", |
| ] |
| |
| test_targets = [] |
| test_dir = "$root_out_dir/test_data/host_test_component_runner" |
| test_data_dir = "$test_dir/test_data" |
| |
| executable("exit") { |
| testonly = true |
| sources = [ "tests/exit.cc" ] |
| output_dir = test_data_dir |
| } |
| |
| executable("output_mock") { |
| testonly = true |
| sources = [ "tests/output_mock.cc" ] |
| output_dir = test_data_dir |
| } |
| |
| host_test_data("test_data") { |
| generated_executable_deps = [ |
| ":exit", |
| ":output_mock", |
| ] |
| |
| sources = [] |
| foreach(dep, generated_executable_deps) { |
| # get_target_outputs does not work on "executables", so need to use this |
| # hack. |
| sources += [ "$test_data_dir/" + get_label_info(dep, "name") ] |
| } |
| |
| deps = generated_executable_deps |
| } |
| |
| foreach(test_name, main_module_tests) { |
| target = "host_test_component_runner.${test_name}_test" |
| main_source = "tests/${test_name}_test.py" |
| python_host_test(target) { |
| enable_mypy = true |
| main_source = main_source |
| main_callable = "unittest.main" |
| extra_args = [ "-v" ] |
| test_dir = "$test_dir" |
| sources = binary_sources |
| libraries = binary_deps |
| deps = [ ":test_data" ] |
| } |
| test_targets += [ ":${target}" ] |
| } |
| |
| group("tests") { |
| testonly = true |
| deps = test_targets |
| } |
| |
| # Copy the resulting .pyz for the host tool |
| copy("copy") { |
| testonly = true |
| deps = [ ":host_test_component_runner" ] |
| sources = [ "${target_out_dir}/host_test_component_runner.pyz" ] |
| outputs = [ "${root_out_dir}/host_test_component_runner.pyz" ] |
| } |
| |
| # create a wrapper script to run python archive using prebuilt python. |
| action("host_test_component_script") { |
| testonly = true |
| script = "//build/testing/create_test.sh" |
| _script_file = "${root_out_dir}/host_test_component" |
| args = [ |
| rebase_path(_script_file, root_build_dir), |
| rebase_path(python_exe_src, root_build_dir), |
| rebase_path("${root_out_dir}/host_test_component_runner.pyz", |
| root_build_dir), |
| ] |
| outputs = [ _script_file ] |
| visibility = [ ":*" ] |
| } |
| |
| group("host_test_component") { |
| testonly = true |
| deps = [ |
| ":copy", |
| ":host_test_component_script", |
| ] |
| } |
| |
| host_test_data("test_deps") { |
| testonly = true |
| deps = [ |
| ":copy", |
| ":host_test_component_script", |
| ] |
| sources = [ |
| "${root_out_dir}/host_test_component", |
| "${root_out_dir}/host_test_component_runner.pyz", |
| ] |
| } |