# 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("connectivity") {
  testonly = true
  deps = [
    ":tests",
    "bluetooth",
    "location",
    "lowpan",
    "openthread",
    "overnet",
    "ppp",
    "telephony",
    "weave",
    "wlan",
  ]
}

group("tools") {
  testonly = true
  deps = [
    "lowpan/tools",
    "management/network-manager-cli",
    "network/dhcpd-cli",
    "network/mdns/bundles:utils",
    "network/net-cli",
    "network/netdump",
    "network/netstack:tools",
    "network/tools",
    "overnet/overnetstack",
    "overnet/tools",
    "wlan:tools",
  ]
}

group("tests") {
  testonly = true
  deps = [
    "bluetooth:tests",
    "ethernet:tests",
    "lib:tests",
    "location:tests",
    "lowpan:tests",
    "management:tests",
    "network:tests",
    "openthread:tests",
    "overnet:tests",
    "ppp:tests",
    "telephony:tests",
    "weave:tests",
    "wlan:tests",
  ]
}
