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

rustc_library("fuchsia-hyper-test-support") {
  testonly = true
  name = "fuchsia_hyper_test_support"
  edition = "2021"
  version = "0.1.0"
  with_unit_tests = true
  deps = [
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-hyper",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:chrono",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:hyper",
    "//third_party/rust_crates:rustls",
    "//third_party/rust_crates:tokio",
    "//third_party/rust_crates:tokio-rustls",
  ]

  if (is_fuchsia) {
    deps += [ "//third_party/rust_crates:pin-project" ]
  } else {
    deps += [ "//third_party/rust_crates:async-net" ]
  }

  sources = [
    "src/fault_injection.rs",
    "src/handler.rs",
    "src/lib.rs",
  ]
}

fuchsia_unittest_package("fuchsia-hyper-test-support-tests") {
  deps = [
    ":fuchsia-hyper-test-support_test",
    "//src/connectivity/network:netstack-for-tests",
    "//src/connectivity/network/dns:component",
  ]

  manifest = "meta/fuchsia_hyper_test_support_lib_test.cml"
}

group("tests") {
  testonly = true
  deps = [
    ":fuchsia-hyper-test-support-tests",
    ":fuchsia-hyper-test-support_test($host_toolchain)",
  ]
}
