# 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("src") {
  testonly = true
  deps = [
    ":tests",
    "camera",
    "cast",
    "chromium",
    "cobalt",
    "connectivity",
    "dart",
    "developer",
    "devices",
    "diagnostics",
    "experiences",
    "factory",
    "flutter",
    "fonts",
    "graphics",
    "identity",
    "ledger",
    "lib",
    "media",
    "modular",
    "recovery",
    "session",
    "speech",
    "storage",
    "sys",
    "testing",
    "ui",
    "virtualization",
  ]
}

group("tests") {
  testonly = true

  deps = [
    ":zircon_host_tests",
    "bringup:tests",
    "camera:tests",
    "chromium:tests",
    "cobalt:tests",
    "connectivity:tests",
    "developer:tests",
    "devices:tests",
    "diagnostics:tests",
    "experiences:tests",
    "factory:tests",
    "fonts:tests",
    "graphics:tests",
    "identity:tests",
    "ledger:tests",
    "lib:tests",
    "media:tests",
    "modular:tests",
    "recovery:tests",
    "session:tests",
    "speech:tests",
    "storage:tests",
    "sys:tests",
    "testing:tests",
    "tests",
    "ui:tests",
    "virtualization:tests",
  ]
}

group("zircon_host_tests") {
  testonly = true
  deps = [ "//build/unification/tests:host" ]
}

group("host_tests") {
  testonly = true
  public_deps = [ "//src/ledger:host_tests" ]
}
