# 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/fidl/fidl.gni")
import("//src/sys/build/components.gni")

group("tests") {
  testonly = true
  deps = [
    ":modular_integration_tests",
    ":module_with_fake_runner",
    "modular_config",

    # modular_test_harness is a dep for any test that uses test_harness_fixture
    # (all of the tests below). Add it here so that an fx set --with
    # //src/modular/tests includes it.
    "//src/cobalt/bin/testing/mock_cobalt",

    # Used for intl testing.
    "//src/intl/intl_services:pkg_small",
    "//src/modular/bin/modular_test_harness",
  ]
}

# FIDL services/structs used for testing code only.
fidl("fuchsia.testing.modular") {
  sources = [ "test_service.test.fidl" ]
}

executable("agent_services_test") {
  testonly = true

  sources = [ "agent_services_test.cc" ]

  deps = [
    ":fuchsia.testing.modular",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//src/modular/lib/pseudo_dir:pseudo_dir_server",
    "//third_party/googletest:gmock",
  ]
}

fuchsia_unittest_component("agent-services-test") {
  manifest = "meta/agent_services_test.cmx"
  deps = [ ":agent_services_test" ]
}

executable("agent_restart_test") {
  testonly = true

  sources = [ "agent_restart_test.cc" ]

  deps = [
    ":fuchsia.testing.modular",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//third_party/googletest:gmock",
  ]
}

fuchsia_unittest_component("agent-restart-test") {
  manifest = "meta/agent_restart_test.cmx"
  deps = [ ":agent_restart_test" ]
}

executable("agent_session_restart_test") {
  testonly = true

  sources = [ "agent_session_restart_test.cc" ]

  deps = [
    ":fuchsia.testing.modular",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//third_party/googletest:gmock",
  ]
}

fuchsia_unittest_component("agent-session-restart-test") {
  manifest = "meta/agent_session_restart_test.cmx"
  deps = [ ":agent_session_restart_test" ]
}

executable("sessionctl_test") {
  testonly = true
  output_name = "sessionctl_test"
  sources = [ "sessionctl_test.cc" ]
  deps = [
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/fidl/fuchsia.sys",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/bin/sessionctl:lib",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
  ]
}

fuchsia_unittest_component("sessionctl-test") {
  manifest = "meta/sessionctl_test.cmx"
  deps = [ ":sessionctl_test" ]
}

executable("session_shell_test") {
  testonly = true

  sources = [ "session_shell_test.cc" ]

  deps = [
    ":fuchsia.testing.modular",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/bin/sessionmgr/testing:annotations_matchers",
    "//src/modular/lib/modular_config:modular_config_constants",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//third_party/googletest:gmock",
  ]
}

fuchsia_unittest_component("session-shell-test") {
  manifest = "meta/session_shell_test.cmx"
  deps = [ ":session_shell_test" ]
}

executable("basemgr_test") {
  testonly = true

  sources = [ "basemgr_test.cc" ]

  deps = [
    ":fuchsia.testing.modular",
    "//sdk/lib/inspect/contrib/cpp:archive_reader",
    "//sdk/lib/modular/testing/cpp",
    "//sdk/lib/stdcompat",
    "//sdk/lib/sys/inspect/cpp",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/fidl:clone",
    "//src/modular/lib/modular_config",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//src/modular/lib/pseudo_dir:pseudo_dir_server",
    "//third_party/googletest:gmock",
  ]
}

fuchsia_unittest_component("basemgr-test") {
  manifest = "meta/basemgr_test.cmx"
  deps = [ ":basemgr_test" ]
}

executable("inspect_session_test") {
  testonly = true

  sources = [ "inspect_session_test.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/inspect/contrib/cpp:archive_reader",
    "//sdk/lib/inspect/testing/cpp",
    "//sdk/lib/sys/cpp/testing:integration",
    "//sdk/lib/sys/inspect/cpp",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_config",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_impl",
    "//third_party/googletest:gmock",
  ]
}

fuchsia_unittest_component("inspect-session-test") {
  manifest = "meta/inspect_session_test.cmx"
  deps = [ ":inspect_session_test" ]
}

executable("intents_test") {
  testonly = true

  sources = [ "intents_test.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/sys/cpp/testing:integration",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
  ]
}

fuchsia_unittest_component("intents-test") {
  manifest = "meta/intents_test.cmx"
  deps = [ ":intents_test" ]
}

executable("module_context_test") {
  testonly = true

  output_name = "module_context_test"

  sources = [ "module_context_test.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/sys/cpp/testing:integration",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//third_party/googletest:gmock",
  ]
}

fuchsia_unittest_component("module-context-test") {
  manifest = "meta/module_context_test.cmx"
  deps = [ ":module_context_test" ]
}

executable("sessionmgr_integration_test") {
  testonly = true

  sources = [ "sessionmgr_integration_test.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.element",
    "//sdk/fidl/fuchsia.hardware.power.statecontrol",
    "//sdk/fidl/fuchsia.intl",
    "//sdk/fidl/fuchsia.modular.internal",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/fidl/fuchsia.sys",
    "//sdk/lib/fdio",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/bin/sessionmgr:annotations",
    "//src/modular/bin/sessionmgr/testing",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//third_party/googletest:gmock",
  ]
}

fuchsia_unittest_component("sessionmgr-integration-test") {
  manifest = "meta/sessionmgr_integration_test.cmx"
  deps = [ ":sessionmgr_integration_test" ]
}

executable("story_shell_factory_test") {
  testonly = true

  sources = [ "story_shell_factory_test.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/sys/cpp/testing:integration",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//src/modular/lib/testing:session_shell_impl",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

fuchsia_unittest_component("story-shell-factory-test") {
  manifest = "meta/story_shell_factory_test.cmx"
  deps = [ ":story_shell_factory_test" ]
}

executable("story_shell_test") {
  testonly = true

  output_name = "story_shell_test"

  sources = [ "story_shell_test.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/fidl/fuchsia.ui.app",
    "//sdk/lib/sys/cpp/testing:integration",
    "//sdk/lib/ui/scenic/cpp",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//third_party/googletest:gmock",
  ]
}

fuchsia_unittest_component("story-shell-test") {
  manifest = "meta/story_shell_test.cmx"
  deps = [ ":story_shell_test" ]
}

executable("component_context_test") {
  testonly = true

  sources = [ "component_context_test.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//zircon/system/ulib/fs",
  ]
}

fuchsia_unittest_component("component-context-test") {
  manifest = "meta/component_context_test.cmx"
  deps = [ ":component_context_test" ]
}

executable("element_manager_test") {
  testonly = true

  sources = [ "element_manager_test.cc" ]

  deps = [
    ":fuchsia.testing.modular",
    "//sdk/fidl/fuchsia.element",
    "//sdk/lib/sys/cpp/testing:integration",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/bin/sessionmgr:annotations",
    "//src/modular/bin/sessionmgr/testing:annotations_matchers",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
    "//src/modular/lib/pseudo_dir:pseudo_dir_server",
    "//third_party/googletest:gmock",
    "//zircon/public/lib/fit",
  ]
}

fuchsia_unittest_component("element-manager-test") {
  manifest = "meta/element_manager_test.cmx"
  deps = [ ":element_manager_test" ]
}

executable("stories_share_session_runners_test") {
  testonly = true

  sources = [ "stories_share_session_runners_test.cc" ]

  deps = [
    ":module_with_fake_runner",
    "//sdk/fidl/fuchsia.intl",
    "//sdk/fidl/fuchsia.modular.testing",
    "//sdk/lib/sys/cpp/testing:integration",
    "//sdk/lib/syslog/cpp",
    "//src/lib/fxl/test:gtest_main",
    "//src/modular/lib/modular_test_harness/cpp:test_harness_fixture",
  ]

  # TODO(fxbug.dev/58160): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-reorder-init-list" ]
}

fuchsia_unittest_component("stories-share-session-runners-test") {
  manifest = "meta/stories_share_session_runners_test.cmx"
  deps = [ ":stories_share_session_runners_test" ]
}

executable("module_with_fake_runner_bin") {
  testonly = true

  output_name = "module_with_fake_runner"

  sources = [ "module_with_fake_runner.cc" ]

  deps = [
    "//sdk/fidl/fuchsia.modular",
    "//sdk/lib/sys/cpp",
    "//src/modular/lib/app_driver/cpp:module_driver",
    "//src/modular/lib/integration_testing/cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

fuchsia_package_with_single_component("module_with_fake_runner") {
  testonly = true
  manifest = "meta/module_with_fake_runner.cmx"
  deps = [ ":module_with_fake_runner_bin" ]
}

fuchsia_test_package("modular_integration_tests") {
  test_components = [
    ":agent-restart-test",
    ":agent-services-test",
    ":agent-session-restart-test",
    ":basemgr-test",
    ":component-context-test",
    ":element-manager-test",
    ":inspect-session-test",
    ":intents-test",
    ":module-context-test",
    ":session-shell-test",
    ":sessionctl-test",
    ":sessionmgr-integration-test",
    ":stories-share-session-runners-test",
    ":story-shell-factory-test",
    ":story-shell-test",
  ]
}
