# 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 = "2018"
  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:http",
    "//third_party/rust_crates:hyper",
    "//third_party/rust_crates:rustls",
    "//third_party/rust_crates:tokio",
    "//third_party/rust_crates:tokio-rustls",
  ]

  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" ]
  manifest = "meta/fuchsia_hyper_test_support_lib_test.cmx"
}

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