# 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.

##########################################
# Though under //zircon, this build file #
# is meant to be used in the Fuchsia GN  #
# build.                                 #
# See fxb/36139.                         #
##########################################

assert(!defined(zx) || zx != "/",
       "This file can only be used in the Fuchsia GN build.")

import("//build/test.gni")
import("//build/unification/images/migrated_manifest.gni")

test("fvm-driver-integration") {
  # Dependent manifests unfortunately cannot be marked as `testonly`.
  # Remove when converting this file to proper GN build idioms.
  testonly = false
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "volume_manager_api_test.cc" ]
  include_dirs = [ ".." ]
  deps = [
    "//zircon/public/lib/devmgr-integration-test",
    "//zircon/public/lib/devmgr-launcher",
    "//zircon/public/lib/fake_ddk",
    "//zircon/public/lib/fvm",
    "//zircon/public/lib/fvm-devices",
    "//zircon/public/lib/zxtest",
    "//zircon/system/dev/block/fvm:shared",
    "//zircon/system/fidl/fuchsia-hardware-block-volume:llcpp",
  ]
}

migrated_manifest("fvm-driver-integration-manifest") {
  deps = [ ":fvm-driver-integration" ]
}
