Files
wipe/tests/wipe.rs
T

76 lines
2.1 KiB
Rust

#![allow(unused_imports, dead_code, unused_variables)]
use assert_cmd::Command;
use predicates::prelude::*;
use std::fs;
use std::io::{Read, Write};
use std::path::Path;
use std::process::Command as StdCommand;
use tempfile::NamedTempFile;
fn wipe_bin() -> String {
// cargo test runs with target/debug/wipe built
// Use Command::cargo_bin to locate
assert_cmd::Command::cargo_bin("wipe")
.unwrap()
.get_program()
.to_string_lossy()
.to_string()
}
#[test]
fn test_overwrite_zero_via_loop_sim() {
// This test uses a regular file as device path but will fail device validation (not block device)
// So we test the overwrite engine via unit tests instead; here we test CLI rejects regular file
let tmp = NamedTempFile::new().unwrap();
let path = tmp.path().to_str().unwrap();
// This will fail at /dev check, not at overwrite, so just verify it fails appropriately
Command::cargo_bin("wipe")
.unwrap()
.args([path, "--whole-disk", "--yes"])
.assert()
.failure()
.code(2);
}
#[test]
fn test_buffer_size_variants() {
for size in ["16M", "32M", "64M", "128M", "1M", "64MiB", "128MiB"] {
let output = Command::cargo_bin("wipe")
.unwrap()
.args([
"/dev/null",
"--whole-disk",
"--buffer-size",
size,
"--dry-run",
"--yes",
])
.output()
.unwrap();
// Should fail as not block device, but not as invalid args (code 5 vs 2)
// So buffer size parsing succeeded
assert_ne!(
output.status.code().unwrap(),
2,
"buffer size {size} should be valid"
);
}
}
#[test]
fn test_passes_validation() {
Command::cargo_bin("wipe")
.unwrap()
.args([
"/dev/sda",
"--whole-disk",
"--passes",
"0",
"--dry-run",
"--yes",
])
.assert()
.failure()
.code(2);
}