# 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_library.gni")
import("//build/fidl/fidl.gni")
import("//build/testing/environments.gni")
import("//topaz/runtime/dart/dart_fuchsia_test.gni")
import("//topaz/runtime/dart/flutter_test.gni")

dart_library("fuchsia_modular_test") {
  package_name = "fuchsia_modular_test"

  sdk_category = "partner"

  sources = [
    "src/agent_interceptor.dart",
    "src/test_harness_fixtures.dart",
    "src/test_harness_spec_builder.dart",
    "test.dart",
  ]

  deps = [
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/fidl/fuchsia.sys",
    "//third_party/dart-pkg/pub/meta",
    "//third_party/dart-pkg/pub/test",
    "//third_party/dart-pkg/pub/test_api",
    "//topaz/public/dart/fidl",
    "//topaz/public/dart/fuchsia",
    "//topaz/public/dart/fuchsia_logger",
    "//topaz/public/dart/fuchsia_modular",
    "//topaz/public/dart/fuchsia_services",
    "//topaz/public/dart/zircon",
    "//zircon/public/fidl/fuchsia-mem",
  ]
}


fidl("test_fidl") {
  name = "test.modular.dart"

  sources = [
    "test_support/fidl/testing.fidl",
  ]
}

# Run tese tests using:
#  fx run-test fuchsia_modular_test_package_integration_tests
dart_fuchsia_test("fuchsia_modular_test_package_integration_tests") {
  meta = [
    {
      path = rebase_path("meta/fuchsia_modular_test_package_integration_tests.cmx")
      dest = "fuchsia_modular_test_package_integration_tests.cmx"
    },
  ]

  sources = [
    "agent_interceptor_test.dart",
    "launch_harness_test.dart",
    "test_harness_spec_builder_test.dart",
  ]

  deps = [
    ":fuchsia_modular_test",
    ":test_fidl",
    "//third_party/dart-pkg/pub/test",
  ]
  environments = basic_envs
}

