# 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 += [
      ":recovery_simulator_boot_test($host_toolchain)",
      ":recovery_simulator_serial_test($host_toolchain)",
    ]
  }
}

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

    source_dir = "//src/recovery/simulator/support"

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

  # 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/recovery/simulator/$split_name"
      deps = [
        ":recovery_simulator_support_lib",
        "//src/testing/qemu",
      ]
    }

    go_test("recovery_simulator_${split_name}") {
      gopackages =
          [ "go.fuchsia.dev/fuchsia/src/recovery/simulator/$split_name" ]
      deps = [ ":$split_name" ]
      non_go_deps = [ "//build/images/recovery:test_data($host_toolchain)" ]
    }
  }

  split_go_test("boot_test") {
  }
  split_go_test("serial_test") {
  }
}
