# 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") {
      testonly = true
      name = invoker.target_name
      location = "$root_out_dir/${invoker.target_name}"
      deps = []
      if (defined(invoker.deps)) {
        deps += invoker.deps
      }
      if (defined(invoker.data_deps)) {
        deps += invoker.data_deps
      }
    }
  }

  executable(target_name) {
    forward_variables_from(invoker, "*")
    testonly = true
    if (is_linux || is_mac) {
      deps += [ ":${target_name}_spec" ]
    }
  }
}

set_defaults("test") {
  configs = default_executable_configs
}
