# 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",
    "//examples/intl/wisdom: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/test_with_environment:test_with_environment_example_test",
    "//sdk/lib/sys/cpp/tests:sys_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",
    "//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/zxdb:zxdb_tests($host_toolchain)",
    "//src/developer/memory/metrics/tests",
    "//src/developer/memory/monitor/tests",
    "//src/developer/sched:tests",
    "//src/developer/trace2json:trace2json_tests($host_toolchain)",
    "//src/developer/tracing/bin/trace/tests:trace_tests",
    "//src/developer/tracing/bin/trace_manager/tests:trace_manager_tests",
    "//src/developer/tracing/bin/trace_stress",
    "//src/developer/tracing/bin/traceutil:zedmon_test($host_toolchain)",
    "//src/developer/tracing/lib/trace_converters:trace_converter_tests",
    "//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/process:process_unittests",
    "//src/lib/ui/base_view:base_view_unittests",
    "//src/lib/uuid:uuid_tests",
    "//src/lib/vulkan:loader_and_validation_tests",
    "//src/lib/webpki-roots-fuchsia:webpki-roots-fuchsia_tests",
    "//src/lib/zircon/rust:fuchsia-zircon-tests",
    "//src/performance/cpuperf/print/tests",
    "//src/performance/cpuperf/tests",
    "//src/performance/insntrace/tests",
    "//src/power:tests",
    "//src/sys/device_settings:device_settings_manager",
    "//src/sys/sysmgr/integration_tests",
    "//src/sys/sysmgr/test:sysmgr-tests",
    "//src/sys/tools/run/test",
    "//src/ui/a11y/bundles:tests",
    "//src/ui/bin/shortcut:tests",
    "//src/ui/bin/terminal:tests",
    "//src/ui/bin/text: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/tests/integration_input_tests",
    "//src/ui/tools/tiles:tiles_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)",
  ]
}

group("scenic") {
  testonly = true
  public_deps = [
    "//src/ui:runtime_with_root_presenter",
    "//src/ui/benchmarks/image_grid_cpp",
    "//src/ui/benchmarks/transparency_benchmark",
    "//src/ui/examples",
    "//src/ui/scenic:tests",
  ]
}
