# 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/test.gni")
import("//src/lib/isolated_devmgr/isolated_devmgr.gni")
import("//src/sys/build/components.gni")

# Tests for the library at //zircon/system/ulib/fs-management.

isolated_devmgr_component("fs-management-devmgr") {
  args = [
    "--svc_name=fuchsia.fsmanagement.devmgr.IsolatedDevmgr",
    "--load_driver=/boot/driver/ramdisk.so",
    "--wait_for=misc/ramctl",
  ]

  deps = [
    "//src/devices/block/drivers/core",
    "//src/devices/block/drivers/ramdisk",
    "//src/devices/board/drivers/integration-test",
    "//src/devices/bus/drivers/platform",
    "//src/devices/tests/sysdev",
  ]
}

test("fs-management-test") {
  deps = [
    "//sdk/lib/fdio",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/fs-management",
    "//zircon/system/ulib/ramdevice-client",
  ]
  sources = [ "format-test.cc" ]
}

fuchsia_component("fs-management-test-component") {
  testonly = true
  manifest = "meta/fs-management-test.cmx"
  component_name = "fs-management-test"
  deps = [
    ":fs-management-devmgr",
    ":fs-management-test",
  ]
}

fuchsia_test_package("fs-management-tests") {
  test_components = [ ":fs-management-test-component" ]
}

group("tests") {
  testonly = true
  public_deps = [ ":fs-management-tests" ]
}
