# Copyright 2017 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("//topaz/runtime/dart/dart_test.gni")
import("//build/dart/dart_library.gni")
import("//build/dart/dart_tool.gni")

dart_tool("dartfmt_extras") {
  package_name = "dartfmt_extras"

  main_dart = "bin/main.dart"

  sources = [
    "dartfmt_extras.dart",
  ]

  deps = [
    "//third_party/dart-pkg/pub/path",
    "//third_party/dart-pkg/pub/source_span",
    "//third_party/dart/pkg/analyzer",
  ]
}

dart_library("dartfmt_extras_test_utils") {
  source_dir = "test"
  infer_package_name = true

  sources = [
    "util.dart",
  ]

  deps = [
    "//third_party/dart-pkg/pub/path",
  ]
}

dart_test("dartfmt_extras_tests") {
  sources = [
    "directives_test.dart",
    "double_quotes_test.dart",
    "../test/util.dart",
  ]

  deps = [
    ":dartfmt_extras_dart_library",
    ":dartfmt_extras_test_utils",
    "//third_party/dart-pkg/git/flutter/packages/flutter_test",
    "//third_party/dart-pkg/pub/test",
  ]
}
