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

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

  sources = [
    "blob.dart",
    "blobstats.dart",
    "dart_package.dart",
    "package.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/path",
  ]
}

dart_test("blobstats_tests") {
  sources = [ "blobstats_test.dart" ]

  deps = [
    ":blobstats_dart_library",
    "//third_party/dart-pkg/pub/meta",
    "//third_party/dart-pkg/pub/test",
  ]
}

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