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

rustc_library("blackout-target") {
  edition = "2018"
  deps = [
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:rand",
    "//third_party/rust_crates:structopt",
  ]

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

rustc_test("blackout-target-lib-test") {
  edition = "2018"
  deps = [
    "//src/lib/storage/fs_management",
    "//src/lib/storage/ramdevice_client",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:rand",
    "//third_party/rust_crates:structopt",
  ]

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

test_package("blackout-target-test") {
  deps = [
    ":blackout-target-lib-test",
    "//src/storage/bin/minfs",
  ]
  binaries = [
    {
      name = "minfs"
    },
  ]
  tests = [
    {
      name = "blackout_target_lib_test"
      environment = basic_envs
    },
  ]
}

group("tests") {
  testonly = true
  public_deps = [ ":blackout-target-test" ]
}
