# 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",
  ]
}

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",
  ]
}

generate_manifest("minfs.manifest") {
  visibility = [ ":*" ]
  args = [ "--binary=bin/minfs" ]
}
minfs_manifest_outputs = get_target_outputs(":minfs.manifest")
minfs_manifest_file = minfs_manifest_outputs[0]

test_package("blackout-target-test") {
  extra = [ minfs_manifest_file ]
  deps = [
    ":blackout-target-lib-test",
    ":minfs.manifest",
  ]
  tests = [
    {
      name = "blackout_target_lib_test"
      environment = basic_envs
    },
  ]
}

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