# 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/dart/dart_library.gni")
import("//build/dart/dart_tool.gni")
import("//build/dart/test.gni")
import("//topaz/tools/protobuf/protobuf_dart.gni")

group("strict_deps_group") {
  deps = [ ":strict_deps" ]
}

dart_tool("strict_deps") {
  package_name = "strict_deps"
  main_dart = "bin/main.dart"
  source_dir = "bin"
  output_name = "strict_deps"
  deps = [
    "./library:dart_strict_deps_lib",
    "//third_party/dart-pkg/pub/args",
  ]
}

protobuf_dart("dart_strict_deps_proto") {
  sources = [ "protos/models.proto" ]
}

dart_test("dart_strict_deps_tests") {
  sources = [
    "dependency_check_test.dart",
    "file_processor_test.dart",
  ]
  deps = [
    ":dart_strict_deps_proto",
    "./library:dart_strict_deps_lib",
    "//third_party/dart-pkg/pub/analyzer",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/package_config",
    "//third_party/dart-pkg/pub/quiver",
    "//third_party/dart-pkg/pub/test",
  ]
}

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