# 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/components.gni")
import("//build/rust/rustc_library.gni")
import("//src/storage/testing/driver_test_realm.gni")

group("rust") {
  public_deps = [ ":ramdevice_client" ]
}

rustc_library("ramdevice_client") {
  with_unit_tests = true
  edition = "2021"
  deps = [
    "//sdk/fidl/fuchsia.device:fuchsia.device_rust",
    "//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block_rust",
    "//sdk/fidl/fuchsia.hardware.ramdisk:fuchsia.hardware.ramdisk_rust",
    "//sdk/fidl/fuchsia.io:fuchsia.io_rust",
    "//sdk/lib/device-watcher/rust",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-fs",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
  ]
  test_deps = [
    "//sdk/fidl/fuchsia.device.fs:fuchsia.device.fs_rust",
    "//src/lib/fuchsia",
    "//third_party/rust_crates:assert_matches",
  ]

  sources = [ "src/lib.rs" ]
}

storage_driver_test_realm_v2_component("ramdevice-client-test-component") {
  deps = [ ":ramdevice_client_test" ]
}

fuchsia_test_package("ramdevice-client-tests") {
  test_components = [ ":ramdevice-client-test-component" ]
}

group("tests") {
  testonly = true
  deps = [ ":ramdevice-client-tests" ]
}
