# 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_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)" ]
}
