# 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 = [
    "test.dart",
    "src/test_harness_fixtures.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_modular",
    "//topaz/public/dart/fuchsia_services",
    "//topaz/public/dart/zircon",
  ]
}

# 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 = [
    "launch_harness_test.dart",
  ]

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

