# 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",
    "intl",
    "lib",
    "media",
    "modular",
    "power",
    "recovery",
    "security",
    "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",
    "hwinfo:tests",
    "identity:tests",
    "intl:tests",
    "lib:tests",
    "media:tests",
    "modular:tests",
    "power:tests",
    "recovery:tests",
    "security: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",
    "//zircon/kernel/lib/heap/cmpctmalloc/tests($host_toolchain)",
    "//zircon/system/ulib/zbitl/test($host_toolchain)",
  ]
}
