# 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/config.gni")
import("//build/flutter/config.gni")

# This has a group corresponding to each product name.  It gives the
# additional base packages that should be included in the build done by
# a bot to run tests and build-time checks to cover that product's code.

group("bringup") {
  testonly = true
  deps = [ "//bundles/bringup:tests" ]
}

# This group contains tests that don't depend on any known e2e test libraries.
# This happens to exclude unit tests for these e2e libraries, so this group is
# not meant to be used directly. It serves as an intermediate group for
# constructing `core_no_e2e` below.
group("no_e2e_dep") {
  testonly = true
  assert_no_deps = e2e_test_libs

  deps = [
    "//build:tests",
    "//bundles:tools",
    "//bundles/packages:all",
    "//examples",
    "//examples:tests",
    "//scripts:tests",
    "//scripts/sdk/gn:tests",
    "//src/diagnostics:tests",
    "//src/media/audio/bundles:virtual_audio_driver",
    "//src/media/bundles:examples",
    "//src/media/bundles:services",
    "//src/media/bundles:tools",
    "//third_party/go:tests",
    "//tools",

    # The following groups have known e2e tests explicitly excluded.
    "//bundles/fidl:tests_no_e2e",
    "//sdk:tests_no_e2e",
    "//src:src_no_e2e",
    "//tools:tests_no_e2e",
  ]
}

# This group contains no e2e tests. Tests in this group:
#
# * Either doesn't transitively depend on any known e2e test libraries;
# * Or are unit tests for known e2e test libraries.
group("core_no_e2e") {
  testonly = true
  deps = [ ":no_e2e_dep" ] + e2e_lib_unit_tests
}

group("core") {
  testonly = true
  deps = [
    ":core_no_e2e",

    # Add in e2e tests excluded from `no_e2e`.
    "//bundles/fidl:tests",
    "//sdk:tests",
    "//src",
    "//tools",

    # Placed with core because core does not run scenic, in contrast to terminal bundle.
    # (perf:touch_input_test expects scenic _not_ to be running)
    "//src/tests/end_to_end/perf:touch_input_test",
  ]

  # Ensure paths to known e2e test libs are always up-to-date.
  deps += e2e_test_libs
}

# This group contains all of the packages the tests in the :core target above
# assume are in the base image. Adding to this list should be done with care,
# as ideally all test packages should deliver their own dependencies.
group("core_base_packages") {
  testonly = true
  deps = [
    "///examples/diagnostics/inspect/codelab/dart/part_1:bin",
    "///examples/diagnostics/inspect/codelab/dart/part_2:bin",
    "///examples/diagnostics/inspect/codelab/dart/part_3:bin",
    "///examples/diagnostics/inspect/codelab/dart/part_4:bin",
    "///examples/diagnostics/inspect/codelab/dart/part_5:bin",
    "///examples/diagnostics/inspect/codelab/rust:inspect_rust_codelab",
    "///src/hwinfo:hwinfo_retail_tests_config",
    "///src/hwinfo:hwinfo_retail_tests_factory_config",
    "///src/hwinfo:hwinfo_tests_config",
    "///src/hwinfo:hwinfo_tests_factory_config",
    "///src/sys/test_manager/tests/tier_2_tests:tier_2_echo_server",
    "///src/tests/coverage:clang_coverage_test_package($target_toolchain)",
    "///src/tests/coverage:rust_coverage_test_package($target_toolchain)",
    "///src/ui/wayland/bin/bridge:bridge",
    "//examples/diagnostics/inspect/codelab/dart/fizzbuzz:bin",
    "//examples/fidl/dart/client:echo-dart-client",
    "//examples/fidl/dart/request_pipelining/client:echo-launcher-dart-client",
    "//examples/fidl/dart/request_pipelining/server:echo-launcher-dart-server",
    "//examples/fidl/dart/server:echo-dart-server",
    "//examples/tests:example-tests",
    "//sdk/dart/fuchsia_inspect/test/integration:dart-inspect-vmo-test-writer",
    "//sdk/dart/fuchsia_inspect/test/validator_puppet:dart-inspect-validator-puppet",
    "//sdk/dart/fuchsia_services/test_support:fuchsia-services-foo-test-server",
    "//sdk/lib/driver_test_realm:package",
    "//sdk/lib/sys/cpp/testing/environment_delegating_runner",
    "//src/chromium:web_engine",
    "//src/chromium:web_runner",
    "//src/cobalt/bin/testing/mock_cobalt",
    "//src/connectivity/bluetooth/profiles/bt-avrcp-target",
    "//src/connectivity/bluetooth/testing/mock-piconet-server",
    "//src/connectivity/location/emergency:emergency",
    "//src/connectivity/lowpan/drivers/lowpan-dummy-driver:lowpan-dummy-driver",
    "//src/connectivity/lowpan/service:lowpanservice",
    "//src/connectivity/lowpan/tools/lowpanctl:lowpanctl",
    "//src/connectivity/network/tun/network-tun:network-tun",
    "//src/connectivity/telephony/ril-at:ril-at",
    "//src/connectivity/telephony/ril-qmi:ril-qmi",
    "//src/connectivity/telephony/telephony-snooper:telephony-snooper",
    "//src/connectivity/telephony/tests:telephony-tests",
    "//src/developer/debug/debug_agent",
    "//src/developer/shell/interpreter:shell_server",
    "//src/developer/tracing/bin/trace:trace",
    "//src/developer/tracing/bin/trace_manager",
    "//src/diagnostics/archivist:archivist-for-embedding",
    "//src/diagnostics/validator/logs/encoding/puppet/dart:log-validator-dart-puppet",
    "//src/factory/fake_factory_store_providers",
    "//src/fonts:pkg",
    "//src/hwinfo:fake_legacy_hwinfo",
    "//src/identity/bin/account_handler:account_handler",
    "//src/identity/bin/account_manager:account_manager",
    "//src/identity/bin/dev_auth_provider:dev_auth_provider",
    "//src/identity/bin/dev_authenticator:dev_authenticator",
    "//src/intl/intl_services:pkg",
    "//src/lib/fuchsia-component/isolated_component_test:fuchsia_component_test_inner",
    "//src/lib/fuchsia-component/isolated_component_test:fuchsia_component_test_middle",
    "//src/lib/fuchsia-component/isolated_component_test:fuchsia_component_test_middle_sibling",
    "//src/lib/storage/ramdevice_client/rust:ramdisk-isolated-devmgr",
    "//src/media/audio/audio_core:audio-core-for-test",
    "//src/media/codec:codec_factory",
    "//src/media/codec:codec_runner_sw_aac",
    "//src/media/codec:codec_runner_sw_ffmpeg",
    "//src/media/codec:codec_runner_sw_sbc",
    "//src/media/playback/mediaplayer:mediaplayer",
    "//src/media/sessions:mediasession",
    "//src/modular/bin/basemgr",
    "//src/modular/bin/modular_test_harness",
    "//src/modular/bin/sessionmgr",
    "//src/modular/bin/sessionmgr:dev_session_shell",
    "//src/modular/tests:module_with_fake_runner",
    "//src/performance/bin/cpuperf_provider:cpuperf_provider",
    "//src/performance/bin/ktrace_provider:ktrace_provider",
    "//src/power/testing/thermal-test-control:thermal-test-control",
    "//src/proc/bin/starnix",
    "//src/security/codelab/smart_door:smart-door",
    "//src/security/codelab/smart_door_memory:smart-door-memory",
    "//src/sys/appmgr/integration_tests/mock_runner:appmgr_mock_runner",
    "//src/sys/appmgr/integration_tests/mock_runner:fake_component_for_runner",
    "//src/sys/appmgr/integration_tests/util:persistent_storage_test_util",
    "//src/sys/component_manager:component-manager",
    "//src/sys/pkg/lib/isolated-swd:isolated-swd-components",
    "//src/sys/test_manager/cmx_runner/tests:cmx_runner_tests",
    "//src/sys/test_manager/tests/diagnostics_tests:test-manager-diagnostics-tests",
    "//src/sys/test_runners/elf/test_data:elf-test-runner-example-tests",
    "//src/sys/test_runners/gotests/test_data:go-test-runner-example",
    "//src/sys/test_runners/gtest/test_data:gtest-runner-example-tests",
    "//src/sys/test_runners/legacy_test/test_data:legacy_test_runner_examples",
    "//src/sys/test_runners/rust/test_data:rust-test-runner-example",
    "//src/sys/test_runners/starnix:starnix-test-runners",
    "//src/sys/tools/chrealm:chrealm",
    "//src/sys/tools/chrealm/integration_tests:chrealm_test_get_message",
    "//src/testing/fidl/echo_client_placeholder",
    "//src/testing/fidl/echo_server_placeholder($default_toolchain)",
    "//src/testing/fidl/intl_property_manager",
    "//src/testing/sl4f",
    "//src/tests/intl/timestamp-server-dart:timestamp-server-dart",
    "//src/tests/microbenchmarks:fuchsia_microbenchmarks_perftestmode",
    "//src/ui/a11y/bin/a11y_manager:a11y-manager",
    "//src/ui/a11y/bin/demo:a11y-demo",
    "//src/ui/bin/hardware_display_controller_provider:fake-hardware-display-controller-provider",
    "//src/ui/bin/root_presenter",
    "//src/ui/bin/text:text_manager",
    "//src/ui/scenic:scenic_pkg",
    "//src/ui/tests/integration_flutter_tests/embedder/child-view",
    "//src/ui/tests/integration_flutter_tests/embedder/parent-view",
    "//src/ui/tests/integration_input_tests/touch:touch-input-test-ip",
    "//src/ui/tests/integration_input_tests/touch/embedding-flutter",
    "//src/ui/tests/integration_input_tests/touch/one-chromium:package",
    "//src/ui/tests/integration_input_tests/touch/one-flutter:one-flutter",
    "//src/ui/tests/integration_input_tests/touch/touch-gfx-client:touch-gfx-client",
    "//src/ui/tests/scenic-stress-tests",
    dart_default_build_cfg.runner_dep,
    flutter_default_build_cfg.runner_dep,
  ]
}

# WARNING: Known to infrastructure.
group("terminal") {
  testonly = true
}

# TODO(https://fxbug.dev/94919) split this into target/host groups and move to //products
group("workstation") {
  testonly = true
  deps = [
    # Only for products in which Flutter is supported.
    "//src/tests/intl/timezone:tests-for-flutter",

    # CFv2 test framework.
    "//src/sys/run_test_suite",

    # Used for Chromium tests
    "//src/testing/fidl/intl_property_manager",

    # E2E tests w/ default toolchain that do not produce Fuchsia packages, only host bins.
    "//src/tests/end_to_end/screen_is_not_black",
    "//src/tests/end_to_end/sl4f:test",
    "//src/tests/end_to_end/time_sync:test",

    # Other e2e dep bundles
    "//src/experiences/tests/e2e:end_to_end_deps",
    "//src/experiences/tests/performance:performance_deps",
    "//src/tests/end_to_end/bundles:end_to_end_deps",

    # Integration tests
    "//src/ui/tests:workstation_tests",

    ### Host-only deps below here ###
    "//src/experiences/tests/chrome:test($host_toolchain)",
    "//src/experiences/tests/e2e:test($host_toolchain)",
    "//src/experiences/tests/performance:test($host_toolchain)",
    "//src/tests/end_to_end/copy_files:test($host_toolchain)",
  ]
}

# "host-tests" targets are for tests which depend on package artifacts such as
# the FVM. They should be included using `fx set --with-host`.

# This group contains no e2e tests. Tests in this group:
#
# * Either doesn't transitively depend on any known e2e test libraries;
# * Or are unit tests for known e2e test libraries.
# TODO(https://fxbug.dev/93763) use an underscore to match source code layout guidelines
group("host-tests_no_e2e") {
  testonly = true
  assert_no_deps = e2e_test_libs
  deps = [
    "//build/assembly:host_tests($host_toolchain)",
    "//build/python:host_tests($host_toolchain)",
    "//src/lib/assembly:host_tests($host_toolchain)",
    "//src/tests/assembly:host_tests($host_toolchain)",
  ]
}

# TODO(https://fxbug.dev/93763) use an underscore to match source code layout guidelines
group("host-tests") {
  testonly = true
  deps = [ ":host-tests_no_e2e" ]
  if (is_linux) {
    deps += [
      "//tools/fvdl/e2e:tests",

      # Installer tests.
      "//build/images/recovery:recovery-installer($target_toolchain)",
      "//build/installer_images($target_toolchain)",
      "//src/tests/installer:tests",
    ]
  }
}
