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

test("tests") {
  testonly = true

  output_name = "libdriver-integration-test"

  sources = [
    "action-list.cc",
    "basic-lifecycle-test.cc",
    "composite-device-test.cc",
    "device-add-tests.cc",
    "integration-test.cc",
    "mock-device-hooks.cc",
    "mock-device-thread.cc",
    "mock-device.cc",
    "root-mock-device.cc",
  ]

  deps = [
    ":mock-device",
    "//garnet/public/lib/gtest",
    "//sdk/fidl/fuchsia.device",
    "//sdk/fidl/fuchsia.device.test",
    "//sdk/fidl/fuchsia.io:fuchsia.io",
    "//sdk/lib/fdio",
    "//src/lib/ddk",
    "//src/lib/fxl/test:gtest_main",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fit",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/devmgr-integration-test",
    "//zircon/system/ulib/inspector",
  ]
}

isolated_devmgr_unittest_package("libdriver-integration-test") {
  executable_path = "test/libdriver-integration-test"

  deps = [
    ":tests",
    "//src/devices/internal/drivers/fragment",
    "//src/devices/internal/drivers/fragment:fragment.proxy",
    "//src/devices/misc/drivers/test",
    "//src/devices/tests/mock-device",
    "//src/devices/tests/sysdev",
  ]
}

fidl("mock-device") {
  # TODO(fxbug.dev/35879): Remove lint exclusions by fixing known FIDL lint violations in this target
  excluded_checks = [ "event-names-must-start-with-on" ]

  name = "fuchsia.device.mock"

  sources = [ "//src/devices/tests/mock-device/mock-device.test.fidl" ]

  public_deps = [ "//zircon/vdso/zx" ]
}
