# Copyright 2020 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_test.gni")

group("logs-connector") {
  testonly = true
  deps = [ ":package" ]
}

rustc_test("bin") {
  name = "test_logs_connector"
  deps = [
    "//sdk/fidl/fuchsia.logger:fuchsia.logger-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//sdk/fidl/fuchsia.sys.internal:fuchsia.sys.internal-rustc",
    "//src/diagnostics/archivist:lib",
    "//src/diagnostics/archivist/fidl:controller-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/syslog/rust:syslog-listener",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:futures",
  ]

  sources = [ "src/lib.rs" ]
}

fuchsia_component("test-logs-connector") {
  testonly = true
  manifest = "meta/test.cmx"
  deps = [ ":bin" ]
}

fuchsia_test_package("package") {
  package_name = "test-logs-connector"
  test_components = [ ":test-logs-connector" ]
}
