# 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/test.gni")
import("//zircon/system/ulib/devmgr-integration-test/isolated_devmgr.gni")

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

driver_module("ddk-runcompatibilityhook-test") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "test-driver.cc" ]
  deps = [
    ":test-compatibility-hook-bind",
    "//sdk/lib/fdio",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddktl",
  ]
}

bind_rules("test-compatibility-hook-child-bind") {
  rules = "test-compatibility-hook-child.bind"
  output = "test-compatibility-hook-child-bind.h"
  deps = [ "//src/devices/bind/fuchsia.test" ]
}

driver_module("ddk-runcompatibilityhook-test-child") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "test-driver-child.cc" ]
  deps = [
    ":test-compatibility-hook-child-bind",
    "//sdk/lib/fdio",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddktl",
  ]
}

test("ddk-runcompatibilityhook") {
  sources = [ "test.cc" ]
  deps = [
    "//sdk/fidl/fuchsia.device:fuchsia.device_llcpp",
    "//sdk/fidl/fuchsia.device.manager:fuchsia.device.manager_c",
    "//sdk/lib/fdio",
    "//src/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/devmgr-integration-test",
    "//zircon/system/ulib/devmgr-launcher",
    "//zircon/system/ulib/driver-integration-test",
  ]
}

isolated_devmgr_unittest_package("ddk-runcompatibilityhook-test-package") {
  executable_path = "test/ddk-runcompatibilityhook"
  deps = [
    ":ddk-runcompatibilityhook",
    ":ddk-runcompatibilityhook-test",
    ":ddk-runcompatibilityhook-test-child",
    "//src/devices/board/drivers/integration-test",
    "//src/devices/bus/drivers/platform",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":ddk-runcompatibilityhook-test-package" ]
}
