| # 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. |
| |
| # Shell script tests are tests generated from script templates |
| # and expose host test metadata. These tests are then runnable after a |
| # build. |
| # |
| # Parameters |
| # |
| # script_template_file |
| # Required. The file to read and process as the script template. Placeholder |
| # strings are {key} and replaces with the corresponding value. The template is processed |
| # by iterating over template_data and calling string_replace. |
| # |
| # template_keys |
| # Optional. The list of keys to process in template_data when processing the script template. |
| # Defaults to []. |
| # template_data |
| # Optional. The key/value object to use when processing the script_template_file. Defaults to an |
| # empty object. |
| # test_name |
| # Optional. The basename of the test. Defaults to "run_$target_name". This |
| # basename is appended with .sh to indicate it is a shell script. |
| template("shellscript_test") { |
| assert(defined(invoker.script_template_file), |
| "script_template_file is a required parameter") |
| script_template_file = invoker.script_template_file |
| |
| if (defined(invoker.template_keys)) { |
| template_keys = invoker.template_keys |
| } else { |
| template_keys = [] |
| } |
| |
| if (defined(invoker.template_data)) { |
| template_data = invoker.template_data |
| } else { |
| template_data = { |
| } |
| } |
| |
| if (defined(invoker.test_name)) { |
| test_name = invoker.test_name |
| } else { |
| test_name = "run_$target_name" |
| } |
| |
| template_contents = read_file(script_template_file, "string") |
| foreach(key, template_keys) { |
| key_str = "{$key}" |
| template_contents = |
| string_replace(template_contents, key_str, template_data[key]) |
| } |
| |
| write_file("${target_out_dir}/${test_name}.sh", template_contents) |
| |
| group(target_name) { |
| testonly = true |
| metadata = { |
| host_test_name = [ rebase_path("${target_out_dir}/${test_name}.sh") ] |
| } |
| if (defined(invoker.deps)) { |
| deps = invoker.deps |
| } |
| if (defined(invoker.data_deps)) { |
| data_deps = invoker.data_deps |
| } |
| } |
| } |