# Copyright 2018 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/flutter/test.gni")
import("//build/testing/environments.gni")

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

  sdk_category = "partner"

  sources = [
    "agent.dart",
    "codecs.dart",
    "lifecycle.dart",
    "logger.dart",
    "module.dart",
    "service_connection.dart",
    "src/agent/agent.dart",
    "src/agent/internal/_agent_impl.dart",
    "src/internal/_component_context.dart",
    "src/lifecycle/internal/_lifecycle_impl.dart",
    "src/lifecycle/lifecycle.dart",
    "src/module/intent.dart",
    "src/module/internal/_fidl_transformers.dart",
    "src/module/internal/_module_context.dart",
    "src/module/internal/_module_impl.dart",
    "src/module/module.dart",
    "src/module/module_state_exception.dart",
    "src/service_connection/agent_service_connection.dart",
  ]

  deps = [
    "//sdk/dart/fidl",
    "//sdk/dart/fuchsia",
    "//sdk/dart/fuchsia_logger",
    "//sdk/dart/fuchsia_scenic",
    "//sdk/dart/fuchsia_services",
    "//sdk/dart/zircon",
    "//sdk/fidl/fuchsia.auth",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.ui.app",
    "//sdk/fidl/fuchsia.ui.views",
    "//third_party/dart-pkg/pub/meta",
  ]
}

# Runs these tests using:
#   fx run-host-tests fuchsia_modular_package_unittests
flutter_test("fuchsia_modular_package_unittests") {
  sources = [
    "agent/agent_test.dart",
    "agent/internal/agent_impl_test.dart",
    "lifecycle/lifecycle_test.dart",
    "matchers.dart",
    "module/intent_test.dart",
    "module/internal/fidl_transformers_test.dart",
    "module/internal/module_impl_test.dart",
    "module/module_test.dart",
    "service_connection/agent_service_connection_test.dart",
  ]

  deps = [
    ":fuchsia_modular",
    "//sdk/dart/fidl",
    "//sdk/dart/fuchsia_logger",
    "//sdk/dart/fuchsia_services",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.sys",
    "//third_party/dart-pkg/pub/mockito",
    "//third_party/dart-pkg/pub/test",
  ]
}

# Run these tests using:
#  fx set x64 --packages topaz/packages/buildbot
# Start a qemu emulator (using a real device is also possible):
#  fx run -kN  (tip: to terminate the emulator press "ctrl+a x")
# Run integration tests:
#  fx test fuchsia-pkg://fuchsia.com/fuchsia-modular-integration-tests#meta/fuchsia-modular-integration-tests.cmx
dart_test_component("integration-tests-component") {
  component_name = "fuchsia-modular-integration-tests"
  manifest = "meta/fuchsia-modular-integration-tests.cmx"

  # TODO(ianloic): these seem wrong, actually...
  sources = [
    "internal/component_context_integ_test.dart",
    "lifecycle/internal/lifecycle_impl_test.dart",
  ]

  deps = [
    ":fuchsia_modular",
    "//sdk/dart/fidl",
    "//sdk/dart/fuchsia_services",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.modular.session",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/fidl/fuchsia.sys",
    "//third_party/dart-pkg/pub/mockito",  # TODO(fxbug.dev/3114): Remove
    "//third_party/dart-pkg/pub/test",
  ]
}

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

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