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

group("a11y") {
  testonly = true
  public_deps = [
    "//garnet/bin/a11y:a11y_tests",
    "//garnet/bin/a11y/a11y_manager",
    "//garnet/bin/a11y/a11y_toggler",
    "//garnet/bin/a11y/fuchsiavox",
  ]
}

group("all") {
  testonly = true
  public_deps = [
    "//garnet/packages/experimental:a11y",
    "//garnet/packages/experimental:kms",
    "//garnet/packages/experimental:linux_guest",
    "//garnet/packages/experimental:linux_runner",
    "//garnet/packages/experimental:network_settings_server",
    "//garnet/packages/experimental:sys",
    "//garnet/packages/experimental:tennis",
    "//garnet/packages/experimental:zircon_guest",
  ]
}

group("linux_guest") {
  testonly = true
  public_deps = [
    "//garnet/bin/guest/pkg/linux_guest",
    "//garnet/packages/prod:guest_runner",
  ]
}

group("debian_guest") {
  testonly = true
  public_deps = [
    "//garnet/bin/guest/pkg/debian_guest",
    "//garnet/packages/prod:guest_runner",
  ]
}

group("network_settings_server") {
  testonly = true
  public_deps = [
    "//garnet/bin/network_settings_server",
  ]
}

group("sys") {
  testonly = true
  public_deps = [
    "//garnet/bin/sys/component_manager",
    "//garnet/bin/sys/component_manager:component_manager_tests",
    "//sdk/fidl/fuchsia.data",
    "//sdk/fidl/fuchsia.sys2",
  ]
}

group("linux_runner") {
  testonly = true
  public_deps = [
    "//garnet/bin/guest/pkg/biscotti_guest/linux_runner",
  ]
}

group("kms") {
  testonly = true
  public_deps = [
    "//garnet/bin/kms:kms",
    "//garnet/bin/kms:kms",
  ]
}

group("zircon_guest") {
  testonly = true
  public_deps = [
    "//garnet/bin/guest/pkg/zircon_guest",
    "//garnet/packages/prod:guest_runner",
  ]
  metadata = {
    config_package_barrier = []
  }
}

group("tennis") {
  testonly = true
  public_deps = [
    "//garnet/bin/tennis:tennis_service",
    "//garnet/bin/tennis:tennis_sysmgr_config",
    "//garnet/bin/tennis:tennis_viewer",
    "//garnet/bin/tennis/bots/example_ai:tennis_example_ai",
    "//garnet/bin/tennis/bots/manual_player:tennis_manual_player",
  ]
}
