# Copyright 2018 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/testing/test_spec.gni")

# This declares a test executable.
#
# The parameters are precisely those of an `executable`.
#
template("test") {
  if (is_linux || is_mac) {
    test_spec("${target_name}_spec") {
      name = invoker.target_name
      location = "$root_out_dir/${invoker.target_name}"
    }
  }

  executable(target_name) {
    forward_variables_from(invoker, "*")
    testonly = true
    if (is_linux || is_mac) {
      # Write runtime dependencies to the root out dir of the base host
      # toolchain so that the file may be found by cross-referencing with
      # $root_build_dir/host_tests.json.
      test_name = get_path_info(target_name, "name")
      host_out_dir = get_label_info(":$target_name(${toolchain_variant.base})",
                                    "target_out_dir")
      write_runtime_deps = "$host_out_dir/$test_name.$test_data_ext"
    }
  }
}

set_defaults("test") {
  configs = default_executable_configs
}
