# 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/runner",
    "//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",
  ]
}
