# 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/rust/rustc_library.gni")
import("//build/rust/rustc_test.gni")

# Full list of io1 conformance tests should be included here. Add deps to the
# test packages for additional filesystem conformance tests and test harnesses.
group("tests") {
  testonly = true
  deps = [
    # Disabled for now until io.test.fidl changes.
    #":fdio_test",
    "//src/storage/conformance/conformance_harness/rustvfs:rustvfs-io1-conformance-test",
    "//src/storage/conformance/conformance_harness/ulibfs:ulibfs-io1-conformance-test",
    "//src/sys/component_manager:component-manager",
  ]
}

rustc_library("io_conformance") {
  name = "io_conformance"
  edition = "2018"
  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.io.test:fuchsia.io.test-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/sys/component_manager/testing:test_utils_lib",
    "//src/sys/component_manager/tests/fidl:components-rustc",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
  ]

  sources = [
    "src/directory_request_logger.rs",
    "src/io1_request_logger_factory.rs",
    "src/lib.rs",
  ]
}

rustc_test("io1_conformance_test") {
  name = "io1_conformance_test"
  edition = "2018"
  source_root = "io1_tests.rs"
  deps = [
    ":io_conformance",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//sdk/fidl/fuchsia.io.test:fuchsia.io.test-rustc",
    "//sdk/fidl/fuchsia.sys2:fuchsia.sys2-rustc",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//src/sys/component_manager/testing:test_utils_lib",
    "//src/sys/component_manager/tests/fidl:components-rustc",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:futures",
  ]

  sources = [ "io1_tests.rs" ]
}

# test("io_conformance_fdio") {
#   sources = [ "fdio.cc" ]
#   deps = [
#     "//sdk/fidl/fuchsia.io.test",
#     "//sdk/lib/sys/cpp",
#     "//third_party/googletest:gtest",
#     "//zircon/system/ulib/async-loop:async-loop-cpp",
#     "//zircon/system/ulib/async-loop:async-loop-default",
#     "//zircon/public/lib/fbl",
#     "//sdk/lib/fdio",
#     "//sdk/fidl/fuchsia.io",
#   ]
# }

# test_package("fdio_test") {
#   package_name = "io_conformance_fdio_test"
#   deps = [ ":io_conformance_fdio" ]
#   tests = [
#     {
#       name = "io_conformance_fdio"
#       environments = basic_envs

#       # TODO(fxbug.dev/44968): Re-enable these tests once we fix race conditions involving starting
#       # and connecting components.
#       disabled = true
#     },
#   ]
# }
