# 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")
import("//build/testing/host_test_data.gni")

go_binary("check-licenses") {
  library = "cmd:main"
}

install_host_tools("host") {
  deps = [ ":check-licenses" ]
  outputs = [ "check-licenses" ]
}

group("tests") {
  testonly = true
  deps = [
    "cmd:tests",
    "directory:tests",
    "file:tests",
    "project:tests",
    "result:tests",
    "util:tests",
  ]
}
