# 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.

import("//build/cpp/sdk_source_set.gni")
import("//build/package/component.gni")
import("//build/test.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

sdk_source_set("cpp") {
  category = "internal"

  sdk_name = "vfs_cpp"

  include_base = "//sdk"
  sources = [
    "connection.cc",
    "connection.h",
    "directory.cc",
    "directory.h",
    "file.cc",
    "file.h",
    "flags.h",
    "internal/directory_connection.cc",
    "internal/directory_connection.h",
    "internal/dirent_filler.cc",
    "internal/dirent_filler.h",
    "internal/file_connection.cc",
    "internal/file_connection.h",
    "internal/node_connection.cc",
    "internal/node_connection.h",
    "lazy_dir.cc",
    "lazy_dir.h",
    "node.cc",
    "node.h",
    "pseudo_dir.cc",
    "pseudo_dir.h",
    "pseudo_file.cc",
    "pseudo_file.h",
    "remote_dir.cc",
    "remote_dir.h",
    "service.cc",
    "service.h",
    "vmo_file.cc",
    "vmo_file.h",
  ]

  public_deps = [
    "//zircon/public/fidl/fuchsia-io",
    "//zircon/public/lib/async",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/zx",
  ]

  public_configs = [ "//sdk/config" ]
}

test("vfs_cpp_unittests") {
  sources = [
    "file_unittest.cc",
    "lazy_dir_unittest.cc",
    "pseudo_dir_unittest.cc",
    "pseudo_file_unittest.cc",
    "remote_dir_unittest.cc",
    "service_unittest.cc",
    "vmo_file_unittest.cc",
  ]

  deps = [
    ":cpp",
    "testing",
    "//garnet/examples/fidl/services:echo",
    "//garnet/public/lib/gtest",
    "//third_party/googletest:gtest_main",
  ]
}

# TODO(IN-933): Reenable once fuchsia_test_component is supported.
# fuchsia_test_component("vfs_cpp_unittests_component") {
#   deps = [
#     ":vfs_cpp_unittests",
#   ]
#   binary = "vfs_cpp_unittests"
# }

# TODO(IN-933): Convert back to package
test_package("vfs_cpp_tests") {
  deps = [
    ":vfs_cpp_unittests",
  ]

  tests = [
    {
      name = "vfs_cpp_unittests"
      environments = basic_envs
    },
  ]
}
