# 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/components.gni")
import("//build/dart/dart_library.gni")
import("//build/dart/dart_test_component.gni")
import("//build/fidl/fidl.gni")
import("//build/flutter/test.gni")
import("//build/testing/environments.gni")

dart_library("fuchsia_modular_testing") {
  package_name = "fuchsia_modular_testing"
  null_safe = true

  sdk_category = "partner"

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

  deps = [
    "//sdk/dart/fidl",
    "//sdk/dart/fuchsia_logger",
    "//sdk/dart/fuchsia_modular",
    "//sdk/dart/fuchsia_services",
    "//sdk/dart/zircon",
    "//sdk/fidl/fuchsia.io",
    "//sdk/fidl/fuchsia.mem",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.modular.session",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.ui.views",
    "//third_party/dart-pkg/pub/meta",
  ]
}

fidl("test_fidl") {
  # TODO(fxb/35879): Remove lint exclusions by fixing known FIDL lint violations in this target
  excluded_checks = [
    "invalid-case-for-decl-name",
    "string-bounds-not-specified",
  ]

  name = "test.modular.dart"

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

# Run tese tests using:
#  fx test fuchsia-pkg://fuchsia.com/fuchsia-modular-testing-integration-tests#meta/fuchsia-modular-testing-package-integration-tests.cmx
dart_test_component("integration-test-component") {
  null_safe = true

  component_name = "fuchsia-modular-testing-integration-tests"
  manifest = "meta/fuchsia-modular-testing-integration-tests.cmx"
  sources = [
    "agent_interceptor_test.dart",
    "launch_harness_test.dart",
    "test_harness_spec_builder_test.dart",
  ]

  deps = [
    ":fuchsia_modular_testing",
    ":test_fidl",
    "//sdk/dart/fidl",
    "//sdk/dart/fuchsia_logger",
    "//sdk/dart/fuchsia_modular",
    "//sdk/dart/zircon",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.modular.session",
    "//sdk/fidl/fuchsia.modular.testing",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]
}

fuchsia_test_package("fuchsia-modular-testing-integration-tests") {
  test_components = [ ":integration-test-component" ]

  # TODO(fxb/65865): This check shouldn't be necessary.
  if (is_fuchsia) {
    test_specs = {
      log_settings = {
        max_severity = "ERROR"
      }
    }
  }
}
