# Copyright 2020 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/config/fuchsia/rules.gni")
import("//build/fidl/fidl.gni")
import("//build/test.gni")
import("//build/test/test_package.gni")
import("//src/lib/isolated_devmgr/devmgr_manifest.gni")

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

driver_module("driver") {
  output_name = "ddk-instance-lifecycle-test"

  testonly = true
  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
  sources = [
    "test-driver-child.cc",
    "test-driver.cc",
  ]
  deps = [
    ":fuchsia.device.instancelifecycle.test_llcpp",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/sync",
  ]
  visibility = [ ":*" ]
}

test("tests") {
  output_name = "ddk-instance-lifecycle-test"

  testonly = true
  sources = [ "test.cc" ]
  deps = [
    ":fuchsia.device.instancelifecycle.test_llcpp",
    "//src/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fdio",
    "//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",
  ]
  visibility = [ ":*" ]
}

devmgr_manifest("devmgr-manifest") {
}

test_package("ddk-instance-lifecycle-test") {
  deps = [
    ":devmgr-manifest",
    ":driver",
    ":tests",
  ]

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

  tests = [
    {
      name = "ddk-instance-lifecycle-test"
      environments = basic_envs
    },
  ]

  resources = [
    {
      path = rebase_path("${root_build_dir}/ddk-instance-lifecycle-test.so")
      dest = "ddk-instance-lifecycle-test.so"
    },
  ]
}
