# 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")
import("//build/testing/host_test_data.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",
    "constants.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_arguments.dart",
    "test_bundle.dart",
    "test_definition.dart",
    "test_event.dart",
    "test_matcher.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",
  ]
}

host_test_data("helpers") {
  sources = [ "//scripts/fxtest/test/output_tester.sh" ]
  outputs = [ "$target_out_dir/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)" ]
}
