# 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/rust/rustc_library.gni")
import("//build/package.gni")

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

  deps = [
    "//garnet/lib/wlan/fidl:fidl-rustc",
    "//garnet/lib/wlan/fidl:service-rustc",
    "//garnet/lib/wlan/fidl:sme-rustc",
    "//garnet/public/lib/fidl/rust/fidl",
    "//garnet/public/rust/fuchsia-async",
    "//garnet/public/rust/fuchsia-syslog",
    "//garnet/public/rust/fuchsia-zircon",
    "//third_party/rust-crates/rustc_deps:failure",
    "//third_party/rust-crates/rustc_deps:futures-preview",
    "//third_party/rust-crates/rustc_deps:pin-utils",
  ]
}

package("connectivity-testing-tests") {
  testonly = true
  deps = [
    ":connectivity-testing",
  ]
  tests = [
    {
      name = "connectivity_testing_lib_test_rustc"
    },
  ]
}
