# 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/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",
    ]
  }
}
