# 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") {
  name = "go.fuchsia.dev/fuchsia/tools/testing/testrunner/lib"
  deps = [ "//tools/testing/runtests" ]
}

go_library("main") {
  name = "go.fuchsia.dev/fuchsia/tools/testing/testrunner/cmd/lib"
  source_dir = "cmd"
  deps = [
    ":lib",
    "//third_party/golibs:golang.org/x/crypto",
    "//tools/build",
    "//tools/lib/color",
    "//tools/lib/logger",
    "//tools/lib/osmisc",
    "//tools/lib/retry",
    "//tools/lib/runner",
    "//tools/net/sshutil",
    "//tools/testing/runtests",
    "//tools/testing/tap",
  ]
}

go_binary("testrunner") {
  gopackage = "go.fuchsia.dev/fuchsia/tools/testing/testrunner/cmd/lib"
  deps = [ ":main" ]
}

go_test("tests") {
  output_name = "testrunner_tests"
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/testing/testrunner/cmd/lib" ]
  deps = [
    ":main",
    "//third_party/golibs:github.com/google/go-cmp",
  ]
}
