# 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-unattributed-sinks") {
  testonly = true
  deps = [ ":package" ]
}

rustc_test("bin") {
  name = "test_logs_unattributed_sinks"
  deps = [
    "//sdk/fidl/fuchsia.logger:fuchsia.logger-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-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",
    "//third_party/rust_crates:futures",
  ]

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

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

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