# Copyright 2018 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/dart/dart_library.gni")
import("//build/dart/dart_test_component.gni")
import("//build/testing/environments.gni")

dart_library("fuchsia_vfs") {
  package_name = "fuchsia_vfs"
  null_safe = true

  sdk_category = "partner"

  source_dir = "lib"

  sources = [
    "src/composed_pseudo_dir.dart",
    "src/internal/_error_node.dart",
    "src/internal/_flags.dart",
    "src/pseudo_dir.dart",
    "src/pseudo_file.dart",
    "src/pseudo_vmo_file.dart",
    "src/service.dart",
    "src/vmo_file.dart",
    "src/vnode.dart",
    "vfs.dart",
  ]

  deps = [
    "//sdk/dart/fidl",
    "//sdk/dart/zircon",
    "//sdk/fidl/fuchsia.io",
    "//sdk/fidl/fuchsia.io2",
    "//sdk/fidl/fuchsia.mem",
    "//third_party/dart-pkg/pub/meta",
    "//third_party/dart-pkg/pub/quiver",
  ]
}

dart_test_component("unittests-component") {
  component_name = "fuchsia-vfs-unittests"
  manifest = "meta/fuchsia-vfs-unittests.cmx"
  sources = [
    "composed_pseudo_dir_test.dart",
    "pseudo_dir_test.dart",
    "pseudo_file_test.dart",
    "pseudo_vmo_file_test.dart",
    "service_test.dart",
    "vmo_file_test.dart",
  ]

  deps = [
    ":fuchsia_vfs",
    "//sdk/dart/fidl",
    "//sdk/dart/zircon",
    "//sdk/fidl/fuchsia.io",
    "//src/testing/fidl:placeholders",
    "//third_party/dart-pkg/pub/test",
  ]
}

fuchsia_test_package("fuchsia-vfs-unittests") {
  package_deps_for_infra_only = [ dart_default_build_cfg.runner_dep ]
  test_components = [ ":unittests-component" ]
}

group("unit_tests") {
  testonly = true
  deps = [ ":fuchsia-vfs-unittests" ]
}

group("tests") {
  testonly = true
  deps = [ ":unit_tests" ]
}
