# 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/fidl/fidl.gni")
import("//build/rust/rustc_test.gni")

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

fidl("stdio") {
  name = "test.log.stdio"
  sources = [ "fidl/stdio.test.fidl" ]
}

rustc_test("bin") {
  name = "test_logs_basic_integration"
  deps = [
    "//sdk/fidl/fuchsia.boot:fuchsia.boot-rustc",
    "//sdk/fidl/fuchsia.logger:fuchsia.logger-rustc",
    "//src/diagnostics/archivist/tests/logs-basic-integration:stdio-rustc",
    "//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",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:rand",
  ]

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

fuchsia_component("test-logs-basic-integration") {
  testonly = true
  manifest = "meta/test.cmx"
  deps = [
    ":bin",
    "puppet",
    "//src/diagnostics/archivist/tests/logging-component",
  ]
}

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