# 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/bind/bind.gni")
import("//build/config/fuchsia/rules.gni")
import("//build/fidl/fidl.gni")
import("//build/test.gni")
import("//zircon/system/ulib/devmgr-integration-test/isolated_devmgr.gni")

fidl("fuchsia.device.inspect.test") {
  testonly = true
  sources = [ "inspect.test.fidl" ]
  visibility = [ ":*" ]
  public_deps = [ "//zircon/vdso/zx" ]
}

bind_rules("inspect-test-bind") {
  rules = "inspect-test.bind"
  output = "inspect-test-bind.h"
  deps = [ "//src/devices/bind/test.platform" ]
}

driver_module("driver") {
  output_name = "inspect-test"
  testonly = true

  sources = [ "test-driver.cc" ]
  deps = [
    ":fuchsia.device.inspect.test_llcpp",
    ":inspect-test-bind",
    "//sdk/lib/fdio",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/system/ulib/inspect",
  ]
  visibility = [
    ":*",
    "//src/devices/bundles:drivers",
  ]
}

test("tests") {
  output_name = "driver-inspect-test"

  testonly = true
  sources = [ "test.cc" ]
  deps = [
    ":fuchsia.device.inspect.test_llcpp",
    "//sdk/fidl/fuchsia.device:fuchsia.device_llcpp",
    "//sdk/fidl/fuchsia.device.manager:fuchsia.device.manager_c",
    "//sdk/lib/fdio",
    "//sdk/lib/inspect/testing/cpp:zxtest",
    "//src/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/devmgr-integration-test",
    "//zircon/system/ulib/devmgr-launcher",
    "//zircon/system/ulib/driver-integration-test",
    "//zircon/system/ulib/inspect",
  ]
  visibility = [ ":*" ]

  # TODO(fxbug.dev/69585): This target uses raw zx::channel with LLCPP which is deprecated.
  # Please migrate to typed channel APIs (fidl::ClientEnd<T>, fidl::ServerEnd<T>).
  # See linked bug for details.
  configs += [ "//build/cpp:fidl-llcpp-deprecated-raw-channels" ]
}

isolated_devmgr_unittest_package("driver-inspect-test") {
  executable_path = "test/driver-inspect-test"

  deps = [
    ":driver",
    ":tests",
    "//src/devices/board/drivers/integration-test",
    "//src/devices/bus/drivers/platform",
  ]
}
