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

rustc_library("fidl_fuchsia_net_dhcp_ext") {
  with_unit_tests = true
  edition = "2021"
  deps = [
    "//sdk/fidl/fuchsia.net:fuchsia.net_rust",
    "//sdk/fidl/fuchsia.net.dhcp:fuchsia.net.dhcp_rust",
    "//sdk/fidl/fuchsia.net.interfaces.admin:fuchsia.net.interfaces.admin_rust",
    "//sdk/fidl/fuchsia.net.routes:fuchsia.net.routes_rust",
    "//sdk/fidl/fuchsia.net.routes.admin:fuchsia.net.routes.admin_rust",
    "//src/connectivity/lib/net-declare",
    "//src/connectivity/lib/net-types",
    "//src/lib/async-utils",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/network/fidl_fuchsia_net_ext",
    "//src/lib/network/fidl_fuchsia_net_interfaces_ext",
    "//src/lib/network/fidl_fuchsia_net_routes_ext",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:tracing",
  ]

  test_deps = [
    "//src/lib/const-unwrap",
    "//src/lib/fuchsia-async",
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:proptest",
    "//third_party/rust_crates:proptest-derive",
    "//third_party/rust_crates:test-case",
  ]

  sources = [ "src/lib.rs" ]

  configs -= [ "//build/config/rust/lints:allow_unused_results" ]
  configs += [ "//build/config/rust/lints:clippy_warn_all" ]
}

fuchsia_unittest_package("fidl-fuchsia-net-dhcp-ext-tests") {
  deps = [ ":fidl_fuchsia_net_dhcp_ext_test" ]
}

group("tests") {
  testonly = true
  deps = [ ":fidl-fuchsia-net-dhcp-ext-tests" ]
}
