# Copyright 2019 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("//src/sys/build/components.gni")

group("tests") {
  testonly = true

  deps = [
    ":inspect-validator-test",
    "lib/cpp:tests",
    "lib/rust:tests",
  ]
}

rustc_binary("validator_bin") {
  name = "validator"
  edition = "2018"
  with_unit_tests = true

  sources = [
    "src/data.rs",
    "src/data/fetch.rs",
    "src/data/scanner.rs",
    "src/main.rs",
    "src/metrics.rs",
    "src/puppet.rs",
    "src/results.rs",
    "src/runner.rs",
    "src/trials.rs",
  ]

  deps = [
    "//sdk/fidl/fuchsia.diagnostics:fuchsia.diagnostics-rustc",
    "//sdk/fidl/fuchsia.inspect:fuchsia.inspect-rustc",
    "//sdk/fidl/fuchsia.mem:fuchsia.mem-rustc",
    "//sdk/fidl/fuchsia.sys:fuchsia.sys-rustc",
    "//src/diagnostics/validator/inspect/fidl:validate-rustc",
    "//src/lib/diagnostics/hierarchy/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/diagnostics/reader/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-url",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:argh",
    "//third_party/rust_crates:base64",
    "//third_party/rust_crates:difference",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:num-derive",
    "//third_party/rust_crates:num-traits",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:thiserror",
  ]
}

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

fuchsia_package("inspect-validator") {
  deps = [ ":validator" ]
}

fuchsia_unittest_package("inspect-validator-test") {
  manifest = "meta/validator-test.cmx"
  deps = [ ":validator_bin_test" ]
}
