# 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("lib") {
  testonly = true
  deps = [
    ":tests",
    "backoff",
    "bootfs",
    "callback",
    "chunked-compression",
    "cobalt",
    "diagnostics",
    "directed_graph",
    "eld",
    "elflib",
    "fake-clock",
    "fdio",
    "fidl_table_validation",
    "files",
    "fuchsia-async-testloop",
    "fuchsia-url",
    "http-sse:http_sse",
    "http-uri-ext",
    "icu",
    "icu_data",
    "inet",
    "intl",
    "isolated_devmgr",
    "loader_service",
    "mapped-vmo",
    "mdns",
    "mundane",
    "network",
    "nix",
    "pkg_url",
    "shared-buffer",
    "storage",
    "syslog",
    "tcp-stream-ext",
    "testing",
    "timekeeper",
    "trace",
    "ui",
    "usb_bulk",
    "uuid",
    "vmo_store",
    "zerocopy",
  ]
}

group("tests") {
  testonly = true

  deps = [
    "analytics:tests",
    "assembly:tests",
    "async-utils:tests",
    "backoff:tests",
    "bootfs:tests",
    "by_addr:tests",
    "callback:tests",
    "chunked-compression:tests",
    "cmx:tests",
    "cobalt:tests",
    "component:tests",
    "containers/cpp:tests",
    "cstr:tests",
    "cutex:tests",
    "ddk:tests",
    "ddktl:tests",
    "diagnostics:tests",
    "digest:tests",
    "directed_graph:tests",
    "elflib:tests",
    "error/clonable_error:tests",
    "fable:tests",
    "fake-clock:tests",
    "fdio:tests",
    "fidl:tests",
    "fidl_codec:tests",
    "fidl_table_validation:tests",
    "files:tests",
    "framebuffer:tests",
    "fuchsia-async:tests",
    "fuchsia-async-testloop:tests",
    "fuchsia-component:tests",
    "fuchsia-hyper:tests",
    "fuchsia-runtime:tests",
    "fuchsia-url:tests",
    "fuzzing:tests",
    "fxl:tests",
    "go-benchmarking:tests",
    "http-sse:tests",
    "http-uri-ext:tests",
    "icu:tests",
    "icu_data:tests",
    "inet:tests",
    "intl:tests",
    "isolated_devmgr:tests",
    "json_parser:tests",
    "libdoc:tests($host_toolchain)",
    "line_input:tests",
    "listnode:tests",
    "loader_service:tests",
    "mapped-vmo:tests",
    "mdns:tests",
    "mpmc:tests",
    "mundane:tests",
    "network:tests",
    "nix:tests",
    "process_builder:tests",
    "scoped_task:tests",
    "shared-buffer:tests",
    "storage:tests",
    "syslog:tests",
    "tcp-stream-ext:tests",
    "test_executor:tests",
    "test_util:tests",
    "testing:tests",
    "thinfs:tests",
    "timekeeper:tests",
    "trace:tests",
    "ui:rust-ui-crates-tests",
    "ui:tests",
    "usb_bulk:tests",
    "vmo_store:tests",
    "waitgroup:tests",
    "watch_handler:tests",
    "zerocopy:tests",
    "zircon:tests",
    "zxc:tests",
  ]
}
