# Copyright 2020 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("gopkg") {
  testonly = true
  name = "go.fuchsia.dev/fuchsia/tools/golden-util"
  deps = [ "//third_party/golibs:github.com/google/go-cmp" ]
  sources = [
    "main.go",
    "main_test.go",
  ]
}

go_binary("golden-util") {
  testonly = true
  gopackage = "go.fuchsia.dev/fuchsia/tools/golden-util"
  deps = [ ":gopkg" ]
}

go_test("golden_util_tests") {
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/golden-util" ]
  deps = [ ":gopkg" ]
}

group("tests") {
  testonly = true
  deps = [ ":golden_util_tests($host_toolchain)" ]
}
