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

import("//build/package.gni")
import("//build/rust/rustc_library.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

rustc_library("connectivity-testing") {
  name = "connectivity_testing"
  with_unit_tests = true
  edition = "2018"

  deps = [
    "//sdk/fidl/fuchsia.hardware.ethernet:fuchsia.hardware.ethernet-rustc",
    "//sdk/fidl/fuchsia.net.oldhttp:fuchsia.net.oldhttp-rustc",
    "//sdk/fidl/fuchsia.net.stack:fuchsia.net.stack-rustc",
    "//sdk/fidl/fuchsia.wlan.common:fuchsia.wlan.common-rustc",
    "//sdk/fidl/fuchsia.wlan.device:fuchsia.wlan.device-rustc",
    "//sdk/fidl/fuchsia.wlan.device.service:fuchsia.wlan.device.service-rustc",
    "//sdk/fidl/fuchsia.wlan.sme:fuchsia.wlan.sme-rustc",
    "//src/connectivity/lib/net-types",
    "//src/connectivity/wlan/lib/common/rust:wlan-common",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:hex",
    "//third_party/rust_crates:pin-utils",
    "//third_party/rust_crates:thiserror",
    "//zircon/system/fidl/fuchsia-net:fuchsia-net-rustc",
  ]
}

unittest_package("connectivity-testing-tests") {
  deps = [ ":connectivity-testing_test" ]
  tests = [
    {
      name = "connectivity_testing_lib_test"
      environments = basic_envs
    },
  ]
}
