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

go_library("lib") {
  sources = [
    "lib.go",
    "lib_test.go",
    "nsjail.go",
    "nsjail_test.go",
    "outputs.go",
    "outputs_test.go",
    "resolve.go",
    "result.go",
    "tester.go",
    "tester_test.go",
  ]

  deps = [
    ":constants",
    "//third_party/golibs:github.com/pkg/sftp",
    "//third_party/golibs:golang.org/x/crypto",
    "//tools/botanist:constants",
    "//tools/botanist:targets",
    "//tools/build",
    "//tools/debug/elflib",
    "//tools/integration/testsharder:testsharder_lib",
    "//tools/lib/clock",
    "//tools/lib/environment",
    "//tools/lib/ffxutil",
    "//tools/lib/iomisc",
    "//tools/lib/logger",
    "//tools/lib/osmisc",
    "//tools/lib/retry",
    "//tools/lib/serial",
    "//tools/lib/streams",
    "//tools/lib/subprocess",
    "//tools/net/sshutil",
    "//tools/testing/resultdb:lib",
    "//tools/testing/runtests",
    "//tools/testing/tap",
    "//tools/testing/testparser",
  ]
}

go_library("constants") {
  source_dir = "constants"
  sources = [ "constants.go" ]
}

go_test("testrunner_lib_tests") {
  library = ":lib"
  deps = [ "//third_party/golibs:github.com/google/go-cmp" ]
}

group("tests") {
  testonly = true
  deps = [ ":testrunner_lib_tests" ]
}
