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

executable("bin") {
  output_name = "inspect_validator_cpp_puppet"

  sources = [ "validator_puppet.cc" ]

  deps = [
    "//sdk/lib/inspect/service/cpp",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/inspect/cpp",
    "//src/diagnostics/validator/inspect/fidl:validate",
    "//zircon/public/lib/fidl",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

fuchsia_component("inspect-validator-cpp-puppet") {
  testonly = true
  manifest = "meta/inspect-validator-cpp-puppet.cmx"
  deps = [ ":bin" ]
}

fuchsia_unittest_package("inspect-validator-test-cpp") {
  manifest = "meta/validator.cmx"
  deps = [
    ":inspect-validator-cpp-puppet",
    "//src/diagnostics/validator/inspect:validator_bin",
  ]
}

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