# 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.
#

group("deprecated_misc_storage_allowlist") {
  #  ________  _________  ________  ________
  # |\   ____\|\___   ___\\   __  \|\   __  \
  # \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
  #  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
  #   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
  #     ____\_\  \   \ \__\ \ \_______\ \__\
  #    |\_________\   \|__|  \|_______|\|__|
  #    \|_________|
  # This is an allowlist of packages that have components manifests that include
  # the "deprecated-misc-storage" feature. This is only intended to be used as
  # a temporary hack for OTAs. Do not add to this list.
  visibility = [ "//garnet/go/src/amber:amber" ]
}

group("deprecated_bare_tests_allowlist") {
  #  ________  _________  ________  ________
  # |\   ____\|\___   ___\\   __  \|\   __  \
  # \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
  #  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
  #   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
  #     ____\_\  \   \ \__\ \ \_______\ \__\
  #    |\_________\   \|__|  \|_______|\|__|
  #    \|_________|
  # This is an allowlist of packages that have bare tests which haven't been converted to components yet.
  # This is only intended to be used as a temporary allowlist. Do not add to this list.
  visibility = [
    "//src/ledger/cloud_provider_memory_diff:cloud_provider_memory_diff_tests",
    "//peridot/bin/sessionmgr/entity_provider_runner:entity_provider_runner_unittests",
    "//topaz/runtime/dart_runner/examples/goodbye_dart:goodbye_dart_test",
    "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi/test:iwlwifi_test",
    "//src/ledger:ledger_tests",
    "//third_party/leveldb:leveldb_tests",
    "//peridot/tests:modular_tests",
    "//topaz/runtime/dart/utils:run_vmservice_object_tests",
    "//src/connectivity/wlan/wlanstack:wlanstack-tests",
    "//garnet/bin/zircon_benchmarks:zircon_benchmarks",
    "//src/graphics/lib/compute/spinel-rs:spinel-rs-tests",
    "//src/lib/ui/input-synthesis:input-synthesis-tests",
    "//garnet/tests/zircon/bringup:bringup_bootfs_test",
    "//garnet/drivers/video/amlogic-decoder:test_amlogic_codec_factory_package",
    "//src/lib/rust_backtrace:rust_backtrace_tests",
  ]
}

group("deprecated_shell_allowlist") {
  #  ________  _________  ________  ________
  # |\   ____\|\___   ___\\   __  \|\   __  \
  # \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
  #  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
  #   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
  #     ____\_\  \   \ \__\ \ \_______\ \__\
  #    |\_________\   \|__|  \|_______|\|__|
  #    \|_________|
  # This is an allowlist of packages that have components manifests that include
  # the "deprecated-shell" feature. Do not add to this list. If the manifest
  # does not otherwise include the feature you need, please file a feature
  # request for that fine-grained feature to help us support least-privileged
  # components.
  visibility = [
    "//garnet/bin/appmgr:appmgr_unittests",
    "//garnet/bin/appmgr/integration_tests:appmgr_integration_tests",
    "//garnet/bin/appmgr/integration_tests/components:components_binary_tests",
    "//garnet/bin/appmgr/integration_tests/inspect:inspect_integration_tests",
    "//garnet/bin/appmgr/integration_tests/inspect:inspect_vmo_integration_tests",
    "//garnet/bin/archivist:archivist",
    "//garnet/bin/chrealm/integration_tests:chrealm_integrationtests",
    "//garnet/bin/cpuperf_provider:cpuperf_provider_tests",
    "//garnet/bin/glob:glob",
    "//garnet/bin/iquery/testing:iquery_golden_test",
    "//garnet/bin/run/test:run_tests",
    "//garnet/bin/run_test_component/test:run_test_component_test",
    "//garnet/bin/sl4f:sl4f",
    "//garnet/bin/sshd-host:sshd-host",
    "//garnet/bin/system_monitor/harvester:system_monitor_harvester",
    "//garnet/bin/system_monitor/harvester:system_monitor_harvester_tests",
    "//garnet/bin/trace:trace",
    "//garnet/bin/trace/tests:trace_tests",
    "//garnet/go/src/amber:amber",
    "//garnet/go/src/amber/system_updater:system_updater_tests",
    "//garnet/public/lib/inspect/integration:libinspect_integration_tests",
    "//garnet/tests/benchmarks/input_latency:garnet_input_latency_benchmarks",
    "//garnet/tests/zircon/libdriver-integration-test:libdriver-integration-test",
    "//peridot/bin/module_resolver/module_package_indexer:module_package_indexer",
    "//peridot/bin/sessionctl:sessionctl",
    "//peridot/public/lib/modular_test_harness/cpp:test_harness_fixture_test",
    "//peridot/tests/sessionctl:sessionctl_integration_tests",
    "//src/connectivity/network/netstack:netstack_gotests",
    "//src/connectivity/network/testing/netemul/runner:netemul_devmgr",
    "//src/developer/debug/debug_agent:debug_agent",
    "//src/developer/debug/debug_agent:debug_agent_tests",
    "//src/developer/feedback_agent:feedback_agent",
    "//src/developer/feedback_agent/tests:feedback_agent_tests",
    "//src/lib/isolated_devmgr:isolated_devmgr_tests",
    "//src/recovery/factory_reset:factory_reset_tests",
  ]
}
