# Copyright 2019 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("http_sse") {
  version = "0.1.0"
  edition = "2021"
  with_unit_tests = true

  deps = [
    "//src/lib/fuchsia-hyper",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:hyper",
    "//third_party/rust_crates:thiserror",
  ]

  test_deps = [
    "//src/lib/fuchsia-async",
    "//third_party/rust_crates:assert_matches",
    "//third_party/rust_crates:proptest",
  ]

  sources = [
    "src/client.rs",
    "src/client_server_tests.rs",
    "src/event.rs",
    "src/lib.rs",
    "src/linealyzer.rs",
    "src/server.rs",
    "src/source.rs",
  ]
}

fuchsia_unittest_package("rust-http-sse-tests") {
  manifest = "meta/http-sse-lib-test.cml"
  deps = [
    ":http_sse_test",
    "//src/connectivity/network:netstack-for-tests",
    "//src/connectivity/network/dns:component",
  ]

  # This test depends on root ssl certificate which is a system capability.
  test_type = "system"
}

group("tests") {
  testonly = true

  deps = [ ":rust-http-sse-tests" ]
}
