# 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("test_spec.gni")

# Declares a test meant to be run out of a ZBI bootfs partition.
#
# This template adds the metadata necessary for test runners to handle a test
# hosted in a ZBI.
#
# Example
# ```
# test("foo") {
#   output_name = "bar"
#   . . .
# }
#
# bootfs_test("test") {
#   name = "bar"
#   deps = [ ":foo" ]
# }
# ```
#
# Parameters
#
#   name
#     Required: Name of the test binary
#     Type: string
#
#   deps
#     Required: Singleton list containing the label of the test target.
#     Type: list(label)
#
#   environments
#     See //build/testing/test_spec.gni.

template("bootfs_test") {
  assert(defined(invoker.name), "Need to specify a test name")
  assert(defined(invoker.deps), "Need to specify deps")
  _deps = invoker.deps
  assert(_deps != [], "Deps should contain exactly one label")
  _label = _deps[0]
  assert(_deps == [ _label ], "Deps should contain exactly one label")

  test_spec(target_name) {
    target = get_label_info(_label, "label_with_toolchain")
    deps = _deps
    path = "/boot/test/${invoker.name}"
    forward_variables_from(invoker, [ "environments" ])
    build_rule = "bootfs_test"
  }
}
