# 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("tools") {
  testonly = true
  public_deps = [
    "//garnet/go/src/fidl",
    "//garnet/go/src/fidlmerge:host",
    "//garnet/packages/prod:cmdutils",
    "//garnet/packages/prod:debug_agent",
    "//garnet/packages/prod:far",
    "//garnet/packages/prod:iquery",
    "//garnet/packages/prod:run",
    "//garnet/packages/prod:tracing",
    "//garnet/packages/testing:all",
    "//garnet/packages/tools:all",
    "//src/camera:tools",
    "//src/connectivity:tools",
    "//src/connectivity/overnet/overnetstack",
    "//src/connectivity/overnet/tools",
    "//src/developer/debug/zxdb:zxdb_host",
    "//src/developer/development-bridge:ffx",
    "//src/developer/exception_broker/limbo_client",
    "//src/developer/feedback/bugreport",
    "//src/developer/kcounter_inspect",
    "//src/developer/memory/mem",
    "//src/developer/remote-control:pkg",
    "//src/developer/remote-control-runner:pkg",
    "//src/developer/system_monitor/bin/dockyard_host:host_tools",
    "//src/developer/system_monitor/bin/harvester:system_monitor_harvester",
    "//src/devices/bind/debugger",
    "//src/devices/tools/banjo:banjo_bin",
    "//src/diagnostics/tool:diag_tool_host($host_toolchain)",
    "//src/diagnostics/triage:install($host_toolchain)",
    "//src/graphics/lib/magma:magma-tools",
    "//src/lib/chunked-compression:chunked-compress-host-tool",
    "//src/lib/icu:tools",
    "//src/media/bundles:tools",
    "//src/recovery/factory_reset:tools",
    "//src/sys/component_manager_for_test",
    "//src/sys/locate",
    "//src/sys/pkg/bin/pm",
    "//src/sys/pkg/bin/pm:host",
    "//src/sys/run_test_suite",
    "//src/sys/tools/cs",
    "//src/sys/tools/runmany",
    "//src/ui/tools/tiles_ctl",
    "//third_party/boringssl:boringssl_tool",
    "//third_party/curl",
    "//third_party/iperf",
    "//third_party/openssh-portable:openssh-tools",
    "//tools",
    "//tools/whereiscl:host($host_toolchain)",
  ]
}

group("infratools") {
  testonly = true
  public_deps = [ "//tools:infratools" ]
}

group("tests") {
  testonly = true
  public_deps = [
    "//examples:tests",
    "//garnet/packages/tests:all",
    "//scripts:tests",
    "//src:tests",
    "//tools:tests",
    "//topaz:tests",
  ]
}

group("kitchen_sink") {
  testonly = true
  public_deps = [
    ":tests",
    "//bundles:tools",
    "//examples",
    "//garnet/packages:all",
    "//garnet/packages/config:amber",
    "//garnet/packages/config:network",
    "//garnet/packages/config:openssh_keys",
    "//garnet/packages/config:thermd",
    "//src/connectivity/telephony",
    "//src/media/audio/bundles:virtual_audio_driver",
    "//src/media/bundles:examples",
    "//src/media/bundles:services",
    "//src/media/bundles:tools",
    "//topaz",
  ]
}

# While we don't necessarily want to run all tests on devices with limited
# flash, we should run a few amlogic-HW-dependent tests on astro and/or
# sherlock.  This list is those tests.  This list intentionally doesn't include
# all of :tests above.
group("amlogic_hw_dependent_tests") {
  testonly = true

  public_deps = [
    "//src/media/codec:hw_dependent_tests",

    # Verify communication with amlogic optee.
    "//src/security/tee_manager:optee_smoke_test",
  ]
}
