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

group("tests") {
  testonly = true
  deps = [ ":storage-operation-tests" ]
}

test("storage_operation") {
  if (is_fuchsia) {
    fdio_config = [ "//build/config/fuchsia:fdio_config" ]
    if (configs + fdio_config - fdio_config != configs) {
      configs -= fdio_config
    }
  }
  sources = [ "unbuffered_operations_builder_test.cc" ]
  deps = [
    "//sdk/lib/fdio",
    "//src/lib/fxl/test:gtest_main",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
    "//zircon/system/ulib/storage/operation",
  ]
}

fuchsia_component("storage-operation-tests-component") {
  component_name = "storage-operation-tests"
  testonly = true
  manifest = "meta/storage-operation-tests.cml"
  deps = [ ":storage_operation" ]
}

fuchsia_test_package("storage-operation-tests") {
  test_components = [ ":storage-operation-tests-component" ]
}
