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

group("logs") {
  testonly = true
  deps = [ ":appmgr_log_integration_tests" ]
}

fuchsia_component("log_emitter_for_test") {
  deps = [ ":log_emitter_bin" ]
  manifest = "meta/log_emitter_for_test.cmx"
}

fuchsia_unittest_package("appmgr_log_integration_tests") {
  manifest = "meta/appmgr_log_integration_tests.cmx"
  deps = [
    ":log_emitter_for_test",
    ":log_tests_bin",
  ]
  test_specs = {
  }
}

rustc_binary("log_tests_bin") {
  name = "appmgr_log_integration_tests"
  source_root = "./log_integration_test.rs"
  edition = "2018"

  deps = [
    "//sdk/fidl/fuchsia.logger:fuchsia.logger-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//src/diagnostics/lib/validating-log-listener",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//third_party/rust_crates:futures",
  ]

  sources = [ "log_integration_test.rs" ]
}

rustc_binary("log_emitter_bin") {
  name = "log_emitter_for_test"
  source_root = "./log_emitter_for_test.rs"
  edition = "2018"

  deps = [
    "//src/lib/syslog/rust:syslog",
    "//third_party/rust_crates:log",
  ]

  sources = [ "log_emitter_for_test.rs" ]
}
