# 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")

group("tests") {
  testonly = true

  deps = []

  if (host_os == "linux") {
    deps += [
      ":shell_default_test($host_toolchain)",
      ":shell_disabled_test($host_toolchain)",
      ":shell_enabled_test($host_toolchain)",
    ]
  }
}

if (is_linux) {
  # These take >5m (the infra timeout) if they're all in one binary, so they
  # need to be split into multiple binaries.

  template("split_go_test") {
    split_name = invoker.target_name
    go_library(target_name) {
      testonly = true
      source_dir = "//src/tests/disable_shell/$split_name"
      deps = [ "//tools/emulator/emulatortest" ]
      forward_variables_from(invoker, [ "sources" ])
    }

    go_test("${split_name}_test") {
      library = ":$split_name"
      non_go_deps = [ "//build/images/fuchsia:fuchsia_zbi_for_host_tests" ]
    }
  }

  split_go_test("shell_disabled") {
    sources = [ "shell_disabled_test.go" ]
  }
  split_go_test("shell_enabled") {
    sources = [ "shell_enabled_test.go" ]
  }
  split_go_test("shell_default") {
    sources = [ "shell_default_test.go" ]
  }
}
