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

rustc_library("http_sse") {
  version = "0.1.0"
  edition = "2018"
  with_unit_tests = true

  deps = [
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-hyper",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:hyper",
    "//third_party/rust_crates:matches",
    "//third_party/rust_crates:proptest",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:void",
  ]

  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.cmx"
  deps = [ ":http_sse_test" ]
}

group("tests") {
  testonly = true

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