# 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/package.gni")
import("//build/rust/rustc_binary.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

rustc_binary("log_validator_rust_puppet_bin") {
  name = "log_validator_rust_puppet"
  edition = "2018"
  testonly = true

  deps = [
    "//sdk/fidl/fuchsia.mem:fuchsia.mem-rustc",
    "//src/diagnostics/log-validator/fidl:validate-rustc",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/diagnostics/stream/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:log",
  ]

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

test_package("log-validator-test-rust") {
  deps = [
    ":log_validator_rust_puppet_bin",
    "//src/diagnostics/log-validator:log-validator-bin",
  ]
  meta = [
    {
      path = rebase_path("meta/log_validator_rust_puppet.cmx")
      dest = "log_validator_rust_puppet.cmx"
    },
  ]

  binaries = [
    {
      name = "log_validator_rust_puppet"
    },
  ]

  tests = [
    {
      name = "log_validator"
      environments = basic_envs
    },
  ]
}

group("tests") {
  testonly = true
  deps = [ ":log-validator-test-rust" ]
}
