# 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/images/manifest.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")
import("//src/lib/isolated_devmgr/devmgr_manifest.gni")

executable("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.test",
    "//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/fdio",
    "//zircon/public/lib/fit",
    "//zircon/system/fidl/fuchsia-device",
    "//zircon/system/fidl/fuchsia-io:fuchsia-io",
    "//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",
  ]
}

devmgr_manifest("devmgr-manifest") {
}

test_package("libdriver-integration-test") {
  deps = [
    ":devmgr-manifest",
    ":tests",
  ]

  extra = [ "$target_gen_dir/devmgr.manifest" ]

  tests = [
    {
      name = "libdriver-integration-test"
      environments = basic_envs
    },
  ]
}

fidl("mock-device") {
  # TODO(fxb/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" ]
}
