# 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.
#
# WARNING: This file was machine-generated from previous json files and
# will eventually be deleted.

# DO NOT ADD TO THIS GROUP.
# DO NOT ADD TO THIS FILE.
# All new tests and test groups should be located in their appropriate area
# under //src and roll up to //src:tests. This group must only shrink.
group("all") {
  testonly = true
  public_deps = [
    ":scenic",
    "//build/tools/json_merge:json_merge_test($host_toolchain)",
    "//examples/intl/tz_version_parrot:tests",
    "//garnet/bin/catapult_converter:catapult_converter_tests($host_toolchain)",
    "//garnet/bin/chrealm/integration_tests:chrealm_integrationtests",
    "//garnet/bin/chrealm/integration_tests:chrealm_test_get_message",
    "//garnet/bin/cpuperf/print/tests:cpuperf_raw_printer_test($host_toolchain)",
    "//garnet/bin/cpuperf/tests:cpuperf_tests",
    "//garnet/bin/cpuperf_provider:cpuperf_provider_tests",
    "//garnet/bin/cpuperf_provider:cpuperf_provider_tests",
    "//garnet/bin/glob",
    "//garnet/bin/hwstress:tests",
    "//garnet/bin/insntrace/tests",
    "//garnet/bin/ktrace_provider:ktrace_provider_tests",
    "//garnet/bin/log_listener:tests",
    "//garnet/bin/odu:odu_tests",
    "//garnet/bin/odu:odu_tests($host_toolchain)",
    "//garnet/bin/perfcompare:tests",
    "//garnet/bin/run/test",
    "//garnet/bin/run_test_component:tests",
    "//garnet/bin/sched:tests",
    "//garnet/bin/setui:tests",
    "//garnet/bin/setui_client:tests",
    "//garnet/bin/sshd-host:sshd-host-tests",
    "//garnet/bin/sysmgr",
    "//garnet/bin/sysmgr/integration_tests",
    "//garnet/bin/sysmgr/test:sysmgr_tests",
    "//garnet/bin/terminal:tests",
    "//garnet/bin/timezone/test:timezone_tests",
    "//garnet/bin/trace/tests:trace_tests",
    "//garnet/bin/trace2json:trace2json_tests($host_toolchain)",
    "//garnet/bin/trace_manager/tests:trace_manager_tests",
    "//garnet/bin/trace_stress",
    "//garnet/bin/traceutil:zedmon_test($host_toolchain)",
    "//garnet/bin/vsock_service:vsock_service-tests",
    "//garnet/bin/wayland:wayland_tests",
    "//garnet/examples/intl/manager:tests",
    "//garnet/examples/intl/wisdom:tests",
    "//garnet/lib/perfmon:tests",
    "//garnet/lib/process:process_unittests",
    "//garnet/lib/profiler/tests:profiler_tests",
    "//garnet/lib/rust/escaped-cstring:escaped-cstring-tests",
    "//garnet/lib/rust/files_async:files_async_tests",
    "//garnet/lib/rust/io_util:io_util_tests",
    "//garnet/lib/rust/sysconfig-client:sysconfig-client-test",
    "//garnet/lib/rust/webpki-roots-fuchsia:webpki-roots-fuchsia_tests",
    "//garnet/lib/trace_converters:trace_converter_tests",
    "//garnet/public/lib/fostr:tests_package",
    "//garnet/tests/acts_tests",
    "//sdk/lib/fuzzing/cpp:fuzz_input_unittests($host_toolchain)",
    "//sdk/lib/fuzzing/cpp:fuzzing_traits_tests",
    "//sdk/lib/inspect/contrib/cpp:tests",
    "//sdk/lib/inspect/service/cpp/tests:inspect_service_cpp_tests",
    "//sdk/lib/svc:svc_tests",
    "//sdk/lib/sys/cpp/testing/examples:component_context_provider_example_test",
    "//sdk/lib/sys/cpp/testing/examples:component_context_provider_example_test",
    "//sdk/lib/sys/cpp/testing/examples/test_with_environment:test_with_environment_example_test",
    "//sdk/lib/sys/cpp/tests:component_cpp_tests",
    "//sdk/lib/sys/inspect/cpp/tests:sys_inspect_cpp_tests",
    "//sdk/lib/sys/service/cpp:sys_service_tests",
    "//sdk/lib/ui/scenic/cpp/tests:scenic_cpp_tests",
    "//sdk/lib/vfs/cpp:vfs_cpp_tests",
    "//sdk/lib/virtualization:virtualization_lib_tests",
    "//src/cobalt/bin:cobalt_tests",
    "//src/connectivity/bluetooth:tests",
    "//src/connectivity/network/netstack:tests",
    "//src/connectivity/network/testing/netemul:tests",
    "//src/connectivity/telephony:tests",
    "//src/connectivity/telephony/lib/qmi-protocol:tests",
    "//src/connectivity/wlan/drivers/third_party/atheros/ath10k:tests",
    "//src/developer/debug/debug_agent:debug_agent_tests",
    "//src/developer/debug/zxdb:zxdb_tests($host_toolchain)",
    "//src/developer/memory/metrics/tests",
    "//src/developer/memory/monitor/tests",
    "//src/developer/system_monitor/bin/dockyard_host/tests:dockyard_host_test($host_toolchain)",
    "//src/developer/system_monitor/bin/harvester:system_monitor_harvester_tests",
    "//src/developer/system_monitor/lib:tests($host_toolchain)",
    "//src/fonts:tests",
    "//src/graphics:tests",
    "//src/graphics/tests:vulkan-tests",
    "//src/graphics/tests/benchmark:vulkan-benchmark",
    "//src/graphics/tests/vkvalidation",
    "//src/lib/containers/cpp:containers_cpp_tests",
    "//src/lib/containers/cpp:containers_cpp_unittests($host_toolchain)",
    "//src/lib/diagnostics/inspect/rust:tests",
    "//src/lib/fsl:fsl_tests",
    "//src/lib/fuchsia-async:fuchsia-async-tests",
    "//src/lib/fuchsia-component/component-launching-test:component-launching-tests",
    "//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/fuchsia-component/isolated_component_test:fuchsia_component_test_outer",
    "//src/lib/fxl:fxl_tests",
    "//src/lib/fxl:fxl_unittests($host_toolchain)",
    "//src/lib/intl:tests",
    "//src/lib/pkg_url:pkg_url_unittests",
    "//src/lib/ui/base_view:base_view_unittests",
    "//src/lib/uuid:uuid_tests",
    "//src/lib/vulkan:loader_and_validation_tests",
    "//src/lib/zircon/rust:fuchsia-zircon-tests",
    "//src/power:tests",
    "//src/sys/appmgr",
    "//src/sys/appmgr:appmgr_scheme_config",
    "//src/sys/device_settings:device_settings_manager",
    "//src/ui/a11y/bundles:tests",
    "//src/ui/bin/default_hardware_ime:default_hardware_ime",
    "//src/ui/bin/default_hardware_ime:default_hardware_ime_tests",
    "//src/ui/bin/ime:tests",
    "//src/ui/bin/shortcut:tests",
    "//src/ui/examples/escher/test:escher_examples_test($host_toolchain)",
    "//src/ui/lib/escher:escher_tests",
    "//src/ui/lib/escher/test:escher_renderer_tests($host_toolchain)",
    "//src/ui/lib/escher/test:escher_unittests($host_toolchain)",
    "//src/ui/testing/text:text_test_suite",
    "//src/ui/testing/text:text_test_suite_tests",
    "//src/ui/tests/integration_input_tests",
    "//src/ui/tools/tiles:tiles_tests",
    "//src/virtualization/bin/guest_manager:guest_manager_tests",
    "//src/virtualization/bin/vmm:vmm_tests",
    "//src/virtualization/bin/vmm/device:virtio_magma",
    "//src/virtualization/lib/grpc:grpc_vsock_tests",
    "//src/virtualization/lib/guest_interaction:tests",
    "//src/virtualization/lib/vsh:vsh_tests",
    "//src/virtualization/packages/biscotti_guest/linux_runner:linux_runner_tests",
    "//src/virtualization/tests",
    "//third_party/boringssl:boringssl_fuzzers",
    "//third_party/boringssl:boringssl_tests",
    "//third_party/libc-tests:nacl-libc-tests",
    "//tools/whereiscl:whereiscl_test($host_toolchain)",
  ]
}

# WARNING: Known to topaz.
group("scenic") {
  testonly = true
  public_deps = [
    "//garnet/bin/ui/benchmarks/image_grid_cpp",
    "//garnet/bin/ui/benchmarks/transparency_benchmark",
    "//garnet/packages/examples:scenic",
    "//garnet/packages/prod:scenic",
    "//src/ui/bin/hardware_display_controller_provider",
    "//src/ui/scenic:tests",
  ]
}
