# Copyright 2021 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 = [ ":blobfs-compression-tests" ]
}

test("blobfs-compression-test") {
  sources = [
    "blobfs-compression-test.cc",
    "offline-compression-test.cc",
  ]
  deps = [
    "//src/lib/chunked-compression",
    "//src/lib/digest",
    "//src/lib/fxl/test:gtest_main",
    "//src/storage/blobfs:blobfs",
    "//src/storage/blobfs/compression/configs",
    "//src/storage/tools/blobfs-compression:common",
    "//zircon/system/ulib/fbl",
  ]
}

fuchsia_unittest_component("blobfs-compression-tests-component") {
  deps = [ ":blobfs-compression-test" ]
}

test("cli-option-validation-test") {
  sources = [ "cli-option-validation-test.cc" ]
  deps = [
    "//src/lib/files",
    "//src/lib/fxl/test:gtest_main",
    "//src/storage/tools/blobfs-compression:common",
    "//src/sys/test_runners:tmp_storage",
  ]
}

fuchsia_unittest_component("cli-option-validation-tests-component") {
  deps = [ ":cli-option-validation-test" ]
}

fuchsia_test_package("blobfs-compression-tests") {
  test_components = [
    ":blobfs-compression-tests-component",
    ":cli-option-validation-tests-component",
  ]
}
