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

dart_tool("status") {
  package_name = "status"
  main_dart = "bin/main.dart"

  sources = [
    "args_gn_collector.dart",
    "collector.dart",
    "env_reader.dart",
    "environment_collector.dart",
    "git_collector.dart",
    "gn_parser.dart",
    "jiri_collector.dart",
    "status.dart",
  ]

  deps = [
    "//third_party/dart-pkg/pub/args",
    "//third_party/dart-pkg/pub/async",
    "//third_party/dart-pkg/pub/convert",
    "//third_party/dart-pkg/pub/io",
    "//third_party/dart-pkg/pub/meta",
    "//third_party/dart-pkg/pub/path",
    "//third_party/dart-pkg/pub/pedantic",
  ]
}

dart_test("status_tests") {
  sources = [ "status_test.dart" ]

  deps = [
    ":status_dart_library",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]
}

group("tests") {
  testonly = true

  deps = [ ":status_tests($host_toolchain)" ]
}
