# 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 fxbug.dev/36139.                   #
##########################################

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

import("//build/test.gni")
import("//zircon/system/ulib/devmgr-integration-test/isolated_devmgr.gni")

test("fs-test-utils") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [
    "fixture_test.cc",
    "main.cc",
    "perftest_test.cc",
    "unittest_test.cc",
  ]
  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_c",
    "//sdk/lib/fdio",
    "//src/storage/blobfs",
    "//src/storage/fvm",
    "//zircon/public/lib/async",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/async-loop",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/digest",
    "//zircon/system/ulib/fdio-caller",
    "//zircon/system/ulib/fs",
    "//zircon/system/ulib/fs-management",
    "//zircon/system/ulib/fs-test-utils",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/gpt",
    "//zircon/system/ulib/memfs",
    "//zircon/system/ulib/memfs:memfs-cpp",
    "//zircon/system/ulib/perftest",
    "//zircon/system/ulib/trace",
    "//zircon/system/ulib/trace-engine",
    "//zircon/system/ulib/trace-provider:trace-provider-with-fdio",
    "//zircon/system/ulib/unittest",
  ]

  data_deps = [
    "//src/devices/block/drivers/core",
    "//src/devices/block/drivers/fvm",
    "//src/devices/block/drivers/ramdisk",
    "//src/devices/misc/drivers/test",
    "//src/devices/tests/sysdev",
    "//src/storage/bin/minfs",
    "//src/storage/blobfs",
  ]
}

isolated_devmgr_unittest_package("fs-test-utils-test") {
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
  executable_path = "test/fs-test-utils"

  features = [ "isolated-temp" ]

  deps = [ ":fs-test-utils" ]
}

group("tests") {
  testonly = true
  deps = [ ":fs-test-utils-test" ]
}
