# Copyright 2019 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/go/go_library.gni")
import("//build/go/go_test.gni")

group("tests") {
  testonly = true

  deps = []

  if (host_os == "linux") {
    deps += [ ":reboot_tests($host_toolchain)" ]
  }
}

if (is_linux) {
  go_library("lib") {
    testonly = true

    name = "fuchsia.googlesource.com/tests/reboot"

    deps = [
      "//src/testing/qemu",
    ]
  }

  group("main_zbi") {
    metadata = {
      test_runtime_deps = [ "$root_build_dir/fuchsia.zbi" ]
    }
  }

  go_test("reboot_tests") {
    gopackages = ["fuchsia.googlesource.com/tests/reboot"]
    deps = [
      ":lib",
    ]
    non_go_deps = [ ":main_zbi" ]
  }
}
