# Copyright 2022 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_library.gni")
import("//build/go/go_test.gni")

go_library("project") {
  sources = [
    "analyze.go",
    "config.go",
    "init.go",
    "metrics.go",
    "project.go",
    "project_test.go",
    "special.go",
  ]
  deps = [
    "//third_party/golibs:golang.org/x/sync",
    "//tools/check-licenses/file",
    "//tools/check-licenses/license",
    "//tools/lib/logger",
  ]
}

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

if (is_host) {
  go_test("check-licenses_project_tests") {
    gopackages = [ "go.fuchsia.dev/fuchsia/tools/check-licenses/project" ]
    args = [
      "--test_data_dir",
      rebase_path("$target_gen_dir/testdata", root_build_dir),
    ]
    deps = [ ":project" ]
    non_go_deps = [ "testdata" ]
  }
}
