| # 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/python/python.gni") | |
| import("//build/testing/host_test.gni") | |
| import("//build/testing/host_test_data.gni") | |
| # Declares a host-side python test. | |
| # | |
| # Parameters | |
| # | |
| # * main_source | |
| # - Required: The .py file that will be interpreted. | |
| # - Type: path | |
| # | |
| # * sources | |
| # - Optional: Other files that are used in the test. | |
| # - Type: list(path) | |
| # | |
| # * deps | |
| # * visibility | |
| # - Optional: Usual GN meanings. | |
| template("python_host_test") { | |
| assert(defined(invoker.main_source), "main_source is required") | |
| _target_dir = get_label_info(target_name, "dir") | |
| _out_dir = "${root_out_dir}/test_data/${_target_dir}" | |
| _host_test_data_target = "${target_name}_test_data" | |
| host_test_data(_host_test_data_target) { | |
| testonly = true | |
| forward_variables_from(invoker, | |
| [ | |
| "deps", | |
| "visibility", | |
| ]) | |
| sources = [ invoker.main_source ] | |
| if (defined(invoker.sources)) { | |
| sources += invoker.sources | |
| } | |
| outputs = [ "${_out_dir}/{{source_file_part}}" ] | |
| } | |
| host_test(target_name) { | |
| binary_path = python_exe_path | |
| args = [ rebase_path("${_out_dir}/${invoker.main_source}", root_build_dir) ] | |
| deps = [ | |
| ":${_host_test_data_target}", | |
| "//build/python:interpreter", | |
| ] | |
| } | |
| } |