# 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("fxtest") {
  package_name = "fxtest"
  main_dart = "bin/main.dart"

  sources = [
    "analytics_reporter.dart",
    "arg_parser.dart",
    "checkers.dart",
    "cmd.dart",
    "cmd_cli.dart",
    "command_tokens.dart",
    "env_reader.dart",
    "exceptions.dart",
    "execution_handle.dart",
    "fuchsia_locator.dart",
    "fxtest.dart",
    "output_buffer.dart",
    "output_formatter.dart",
    "package_url.dart",
    "rebuilder.dart",
    "test_bundle.dart",
    "test_definition.dart",
    "test_event.dart",
    "test_names_collector.dart",
    "test_runner.dart",
    "tests_config.dart",
    "tests_manifest_reader.dart",
  ]

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

copy("helpers") {
  sources = [ "//scripts/fxtest/test/output_tester.sh" ]
  outputs = [ "$target_out_dir/test/output_tester.sh" ]
  metadata = {
    test_runtime_deps = [ "/test/output_tester.sh" ]
  }
}

dart_test("fxtest_tests") {
  sources = [
    "args_test.dart",

    # "output_test.dart",
    "parsing_test.dart",
    "setup_test.dart",
    "utils_test.dart",
  ]

  non_dart_deps = [ ":helpers" ]

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

group("tests") {
  testonly = true

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