# 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 = [ "result.go" ]

  deps = [ "//tools/testing/runtests" ]
}

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

go_library("main") {
  source_dir = "cmd"

  sources = [
    "main.go",
    "main_test.go",
    "outputs.go",
    "outputs_test.go",
    "tester.go",
    "tester_test.go",
  ]

  deps = [
    ":constants",
    ":lib",
    "//third_party/golibs:golang.org/x/crypto",
    "//tools/botanist:constants",
    "//tools/botanist:target",
    "//tools/build",
    "//tools/debug/elflib",
    "//tools/integration/testsharder:testsharder_lib",
    "//tools/lib/color",
    "//tools/lib/environment",
    "//tools/lib/iomisc",
    "//tools/lib/logger",
    "//tools/lib/osmisc",
    "//tools/lib/retry",
    "//tools/lib/subprocess",
    "//tools/net/sshutil",
    "//tools/testing/runtests",
    "//tools/testing/tap",
    "//tools/testing/testparser",
  ]
}

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

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