# 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/config/fuchsia/zircon.gni")
import("//build/go/go_library.gni")
import("//build/go/go_test.gni")
import("//build/testing/environments.gni")
import("//garnet/tests/system_ota_tests/system_ota_tests.gni")

copy("copy") {
  testonly = true
  sources = [
    "$zircon_tools_dir/netaddr",
    "//prebuilt/tools/artifacts/artifacts",
    "//prebuilt/tools/lkgb/lkgb",
  ]
  outputs = [
    "$root_out_dir/test_data/system_ota_tests/{{source_file_part}}",
  ]
}

go_library("system_ota_tests_lib") {
  testonly = true
  name = "fuchsia.googlesource.com/system_ota_tests"
  deps = [
    "//src/testing/host_target_testing",
  ]
  non_go_deps = [ ":copy" ]
  metadata = {
    test_runtime_deps = get_target_outputs(":copy")
  }
}

go_test("system_ota_tests_upgrade") {
  gopackage = "fuchsia.googlesource.com/system_ota_tests/upgrade_test"
  disabled = true
  deps = [
    ":system_ota_tests_lib",
  ]
}

group("system_ota_tests") {
  testonly = true
  deps = [
    ":system_ota_tests_upgrade($host_toolchain)",
  ]
}
