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

group("tests") {
  testonly = true

  deps = []

  # kernel_panic_tests uses //src/testing/emulator, which only works on
  # linux.
  if (host_os == "linux") {
    deps += [ ":kernel_panic_tests($host_toolchain)" ]
  }
}

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

    deps = [ "//src/testing/emulator" ]

    sources = [ "kernel_panic_test.go" ]
  }

  host_test_data("main_zbi") {
    sources = [ "$root_build_dir/fuchsia.zbi" ]
  }

  go_test("kernel_panic_tests") {
    gopackages = [ "go.fuchsia.dev/fuchsia/src/tests/kernel_panic" ]
    deps = [ ":lib" ]
    non_go_deps = [ ":main_zbi" ]
  }
}
