diff --git a/tests/cache_check.rs b/tests/cache_check.rs
index f73c7ae..d729542 100644
--- a/tests/cache_check.rs
+++ b/tests/cache_check.rs
@@ -90,7 +90,7 @@ test_corrupted_input_data!(CacheCheck);
fn failing_q() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_zeroed_md(&mut td)?;
- let output = run_fail_raw(CACHE_CHECK, &["-q", md.to_str().unwrap()])?;
+ let output = run_fail_raw(CACHE_CHECK, args!["-q", &md])?;
assert_eq!(output.stdout.len(), 0);
assert_eq!(output.stderr.len(), 0);
Ok(())
@@ -100,7 +100,7 @@ fn failing_q() -> Result<()> {
fn failing_quiet() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_zeroed_md(&mut td)?;
- let output = run_fail_raw(CACHE_CHECK, &["--quiet", md.to_str().unwrap()])?;
+ let output = run_fail_raw(CACHE_CHECK, args!["--quiet", &md])?;
assert_eq!(output.stdout.len(), 0);
assert_eq!(output.stderr.len(), 0);
Ok(())
diff --git a/tests/common/common_args.rs b/tests/common/common_args.rs
index 095e74b..a0cba34 100644
--- a/tests/common/common_args.rs
+++ b/tests/common/common_args.rs
@@ -2,6 +2,7 @@ use anyhow::Result;
use thinp::version::tools_version;
+use crate::args;
use crate::common::process::*;
use crate::common::program::*;
@@ -12,7 +13,7 @@ pub fn test_help_short<'a, P>() -> Result<()>
where
P: Program<'a>,
{
- let stdout = run_ok(P::path(), &["-h"])?;
+ let stdout = run_ok(P::path(), args!["-h"])?;
assert_eq!(stdout, P::usage());
Ok(())
}
@@ -21,7 +22,7 @@ pub fn test_help_long<'a, P>() -> Result<()>
where
P: Program<'a>,
{
- let stdout = run_ok(P::path(), &["--help"])?;
+ let stdout = run_ok(P::path(), args!["--help"])?;
assert_eq!(stdout, P::usage());
Ok(())
}
@@ -48,7 +49,7 @@ pub fn test_version_short<'a, P>() -> Result<()>
where
P: Program<'a>,
{
- let stdout = run_ok(P::path(), &["-V"])?;
+ let stdout = run_ok(P::path(), args!["-V"])?;
assert!(stdout.contains(tools_version()));
Ok(())
}
@@ -57,7 +58,7 @@ pub fn test_version_long<'a, P>() -> Result<()>
where
P: Program<'a>,
{
- let stdout = run_ok(P::path(), &["--version"])?;
+ let stdout = run_ok(P::path(), args!["--version"])?;
assert!(stdout.contains(tools_version()));
Ok(())
}
@@ -84,7 +85,7 @@ where
P: Program<'a>,
{
let option = "--hedgehogs-only";
- let stderr = run_fail(P::path(), &[option])?;
+ let stderr = run_fail(P::path(), args![option])?;
assert!(stderr.contains(&P::bad_option_hint(option)));
Ok(())
}
diff --git a/tests/common/input_arg.rs b/tests/common/input_arg.rs
index 6b3e00f..1dc377a 100644
--- a/tests/common/input_arg.rs
+++ b/tests/common/input_arg.rs
@@ -1,6 +1,9 @@
use anyhow::Result;
+use std::ffi::OsStr;
+
use thinp::file_utils;
+use crate::args;
use crate::common::fixture::*;
use crate::common::process::*;
use crate::common::program::*;
@@ -10,38 +13,38 @@ use crate::common::thin_xml_generator::{write_xml, FragmentedS};
//------------------------------------------
// wrappers
-type ArgsBuilder = fn(&mut TestDir, &str, &dyn Fn(&[&str]) -> Result<()>) -> Result<()>;
+type ArgsBuilder = fn(&mut TestDir, &OsStr, &dyn Fn(&[&OsStr]) -> Result<()>) -> Result<()>;
fn with_output_md_untouched(
td: &mut TestDir,
- input: &str,
- thunk: &dyn Fn(&[&str]) -> Result<()>,
+ input: &OsStr,
+ thunk: &dyn Fn(&[&OsStr]) -> Result<()>,
) -> Result<()> {
let output = mk_zeroed_md(td)?;
ensure_untouched(&output, || {
- let args = ["-i", input, "-o", output.to_str().unwrap()];
+ let args = args!["-i", input, "-o", &output];
thunk(&args)
})
}
fn with_output_superblock_zeroed(
td: &mut TestDir,
- input: &str,
- thunk: &dyn Fn(&[&str]) -> Result<()>,
+ input: &OsStr,
+ thunk: &dyn Fn(&[&OsStr]) -> Result<()>,
) -> Result<()> {
let output = mk_zeroed_md(td)?;
ensure_superblock_zeroed(&output, || {
- let args = ["-i", input, "-o", output.to_str().unwrap()];
+ let args = args!["-i", input, "-o", &output];
thunk(&args)
})
}
fn input_arg_only(
_td: &mut TestDir,
- input: &str,
- thunk: &dyn Fn(&[&str]) -> Result<()>,
+ input: &OsStr,
+ thunk: &dyn Fn(&[&OsStr]) -> Result<()>,
) -> Result<()> {
- let args = [input];
+ let args = args![input];
thunk(&args)
}
@@ -82,7 +85,7 @@ where
let mut td = TestDir::new()?;
let output = mk_zeroed_md(&mut td)?;
ensure_untouched(&output, || {
- let args = ["-o", output.to_str().unwrap()];
+ let args = args!["-o", &output];
let stderr = run_fail(P::path(), &args)?;
assert!(stderr.contains(P::missing_input_arg()));
Ok(())
@@ -106,7 +109,7 @@ where
let mut td = TestDir::new()?;
let wrapper = build_args_fn(P::arg_type())?;
- wrapper(&mut td, "no-such-file", &|args: &[&str]| {
+ wrapper(&mut td, "no-such-file".as_ref(), &|args: &[&OsStr]| {
let stderr = run_fail(P::path(), args)?;
assert!(stderr.contains(P::file_not_found()));
Ok(())
@@ -130,7 +133,7 @@ where
let mut td = TestDir::new()?;
let wrapper = build_args_fn(P::arg_type())?;
- wrapper(&mut td, "/tmp", &|args: &[&str]| {
+ wrapper(&mut td, "/tmp".as_ref(), &|args: &[&OsStr]| {
let stderr = run_fail(P::path(), args)?;
assert!(stderr.contains("Not a block device or regular file"));
Ok(())
@@ -158,7 +161,7 @@ where
duct::cmd!("chmod", "-r", &input).run()?;
let wrapper = build_args_fn(P::arg_type())?;
- wrapper(&mut td, input.to_str().unwrap(), &|args: &[&str]| {
+ wrapper(&mut td, input.as_ref(), &|args: &[&OsStr]| {
let stderr = run_fail(P::path(), args)?;
assert!(stderr.contains("Permission denied"));
Ok(())
@@ -188,7 +191,7 @@ where
file_utils::create_sized_file(&input, 1024)?;
let wrapper = build_args_fn(P::arg_type())?;
- wrapper(&mut td, input.to_str().unwrap(), &|args: &[&str]| {
+ wrapper(&mut td, input.as_ref(), &|args: &[&OsStr]| {
let stderr = run_fail(P::path(), args)?;
assert!(stderr.contains("Metadata device/file too small. Is this binary metadata?"));
Ok(())
@@ -217,7 +220,7 @@ where
write_xml(&input, &mut gen)?;
let wrapper = build_args_fn(P::arg_type())?;
- wrapper(&mut td, input.to_str().unwrap(), &|args: &[&str]| {
+ wrapper(&mut td, input.as_ref(), &|args: &[&OsStr]| {
let stderr = run_fail(P::path(), args)?;
eprintln!("{}", stderr);
let msg = format!(
@@ -250,7 +253,7 @@ where
ArgType::InputArg => input_arg_only,
ArgType::IoOptions => with_output_superblock_zeroed,
};
- wrapper(&mut td, input.to_str().unwrap(), &|args: &[&str]| {
+ wrapper(&mut td, input.as_ref(), &|args: &[&OsStr]| {
let stderr = run_fail(P::path(), args)?;
assert!(stderr.contains(P::corrupted_input()));
Ok(())
diff --git a/tests/common/output_option.rs b/tests/common/output_option.rs
index 8cd2da1..e4e7695 100644
--- a/tests/common/output_option.rs
+++ b/tests/common/output_option.rs
@@ -2,6 +2,7 @@ use anyhow::Result;
use thinp::file_utils;
+use crate::args;
use crate::common::process::*;
use crate::common::program::*;
use crate::common::test_dir::*;
@@ -15,7 +16,7 @@ where
{
let mut td = TestDir::new()?;
let input = P::mk_valid_input(&mut td)?;
- let stderr = run_fail(P::path(), &["-i", input.to_str().unwrap()])?;
+ let stderr = run_fail(P::path(), args!["-i", &input])?;
assert!(stderr.contains(P::missing_output_arg()));
Ok(())
}
@@ -36,10 +37,7 @@ where
{
let mut td = TestDir::new()?;
let input = P::mk_valid_input(&mut td)?;
- let stderr = run_fail(
- P::path(),
- &["-i", input.to_str().unwrap(), "-o", "no-such-file"],
- )?;
+ let stderr = run_fail(P::path(), args!["-i", &input, "-o", "no-such-file"])?;
assert!(stderr.contains(
::file_not_found()));
Ok(())
}
@@ -60,7 +58,7 @@ where
{
let mut td = TestDir::new()?;
let input = P::mk_valid_input(&mut td)?;
- let stderr = run_fail(P::path(), &["-i", input.to_str().unwrap(), "-o", "/tmp"])?;
+ let stderr = run_fail(P::path(), args!["-i", &input, "-o", "/tmp"])?;
assert!(stderr.contains("Not a block device or regular file"));
Ok(())
}
@@ -86,15 +84,7 @@ where
let _file = file_utils::create_sized_file(&output, 4096);
duct::cmd!("chmod", "-w", &output).run()?;
- let stderr = run_fail(
- P::path(),
- &[
- "-i",
- input.to_str().unwrap(),
- "-o",
- output.to_str().unwrap(),
- ],
- )?;
+ let stderr = run_fail(P::path(), args!["-i", &input, "-o", &output])?;
assert!(stderr.contains("Permission denied"));
Ok(())
}
@@ -123,15 +113,7 @@ where
let output = td.mk_path("meta.bin");
let _file = file_utils::create_sized_file(&output, 4096);
- let stderr = run_fail(
- P::path(),
- &[
- "-i",
- input.to_str().unwrap(),
- "-o",
- output.to_str().unwrap(),
- ],
- )?;
+ let stderr = run_fail(P::path(), args!["-i", &input, "-o", &output])?;
assert!(stderr.contains("Output file too small"));
Ok(())
}
diff --git a/tests/common/process.rs b/tests/common/process.rs
index c87e2bc..a5da6d2 100644
--- a/tests/common/process.rs
+++ b/tests/common/process.rs
@@ -3,6 +3,17 @@ use std::ffi::{OsStr, OsString};
//------------------------------------------
+#[macro_export]
+macro_rules! args {
+ ( $( $arg: expr ),* ) => {
+ {
+ use std::ffi::OsStr;
+ let args = [$( OsStr::new($arg) ),*];
+ args
+ }
+ };
+}
+
// Returns stdout. The command must return zero.
pub fn run_ok(program: S, args: I) -> Result
where
diff --git a/tests/common/thin.rs b/tests/common/thin.rs
index 0004f2d..685e59f 100644
--- a/tests/common/thin.rs
+++ b/tests/common/thin.rs
@@ -4,6 +4,7 @@ use std::path::PathBuf;
use thinp::file_utils;
use thinp::io_engine::*;
+use crate::args;
use crate::common::fixture::*;
use crate::common::process::*;
use crate::common::target::*;
@@ -27,7 +28,7 @@ pub fn mk_valid_md(td: &mut TestDir) -> Result {
write_xml(&xml, &mut gen)?;
let _file = file_utils::create_sized_file(&md, 4096 * 4096);
- let args = ["-i", xml.to_str().unwrap(), "-o", md.to_str().unwrap()];
+ let args = args!["-i", &xml, "-o", &md];
run_ok(THIN_RESTORE, &args)?;
Ok(md)
@@ -38,27 +39,21 @@ pub fn mk_valid_md(td: &mut TestDir) -> Result {
// FIXME: replace mk_valid_md with this?
pub fn prep_metadata(td: &mut TestDir) -> Result {
let md = mk_zeroed_md(td)?;
- let args = [
- "-o",
- md.to_str().unwrap(),
- "--format",
- "--nr-data-blocks",
- "102400",
- ];
+ let args = args!["-o", &md, "--format", "--nr-data-blocks", "102400"];
run_ok(THIN_GENERATE_METADATA, &args)?;
// Create a 2GB device
- let args = ["-o", md.to_str().unwrap(), "--create-thin", "1"];
+ let args = args!["-o", &md, "--create-thin", "1"];
run_ok(THIN_GENERATE_METADATA, &args)?;
- let args = [
+ let args = args![
"-o",
- md.to_str().unwrap(),
+ &md,
"--dev-id",
"1",
"--size",
"2097152",
"--rw=randwrite",
- "--seq-nr=16",
+ "--seq-nr=16"
];
run_ok(THIN_GENERATE_MAPPINGS, &args)?;
@@ -66,20 +61,14 @@ pub fn prep_metadata(td: &mut TestDir) -> Result {
let mut snap_id = 2;
for _i in 0..10 {
// take a snapshot
- let args = [
- "-o",
- md.to_str().unwrap(),
- "--create-snap",
- &snap_id.to_string(),
- "--origin",
- "1",
- ];
+ let snap_id_str = snap_id.to_string();
+ let args = args!["-o", &md, "--create-snap", &snap_id_str, "--origin", "1"];
run_ok(THIN_GENERATE_METADATA, &args)?;
// partially overwrite the origin (64MB)
- let args = [
+ let args = args![
"-o",
- md.to_str().unwrap(),
+ &md,
"--dev-id",
"1",
"--size",
@@ -87,7 +76,7 @@ pub fn prep_metadata(td: &mut TestDir) -> Result {
"--io-size",
"131072",
"--rw=randwrite",
- "--seq-nr=16",
+ "--seq-nr=16"
];
run_ok(THIN_GENERATE_MAPPINGS, &args)?;
snap_id += 1;
@@ -97,7 +86,7 @@ pub fn prep_metadata(td: &mut TestDir) -> Result {
}
pub fn set_needs_check(md: &PathBuf) -> Result<()> {
- let args = ["-o", md.to_str().unwrap(), "--set-needs-check"];
+ let args = args!["-o", &md, "--set-needs-check"];
run_ok(THIN_GENERATE_METADATA, &args)?;
Ok(())
}
@@ -108,16 +97,19 @@ pub fn generate_metadata_leaks(
expected: u32,
actual: u32,
) -> Result<()> {
- let args = [
+ let nr_blocks_str = nr_blocks.to_string();
+ let expected_str = expected.to_string();
+ let actual_str = actual.to_string();
+ let args = args![
"-o",
- md.to_str().unwrap(),
+ &md,
"--create-metadata-leaks",
"--nr-blocks",
- &nr_blocks.to_string(),
+ &nr_blocks_str,
"--expected",
- &expected.to_string(),
+ &expected_str,
"--actual",
- &actual.to_string(),
+ &actual_str
];
run_ok(THIN_GENERATE_DAMAGE, &args)?;
diff --git a/tests/thin_check.rs b/tests/thin_check.rs
index 7b166a7..1f1db46 100644
--- a/tests/thin_check.rs
+++ b/tests/thin_check.rs
@@ -93,8 +93,7 @@ test_corrupted_input_data!(ThinCheck);
fn accepts_flag(flag: &str) -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let md_path = md.to_str().unwrap();
- run_ok(THIN_CHECK, &[flag, md_path])?;
+ run_ok(THIN_CHECK, args![flag, &md])?;
Ok(())
}
@@ -130,9 +129,8 @@ fn accepts_auto_repair() -> Result<()> {
fn accepts_quiet() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let md_path = md.to_str().unwrap();
- let output = run_ok_raw(THIN_CHECK, &["--quiet", md_path])?;
+ let output = run_ok_raw(THIN_CHECK, args!["--quiet", &md])?;
assert_eq!(output.stdout.len(), 0);
assert_eq!(output.stderr.len(), 0);
Ok(())
@@ -145,8 +143,7 @@ fn accepts_quiet() -> Result<()> {
fn detects_corrupt_superblock_with_superblock_only() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_zeroed_md(&mut td)?;
- let md_path = md.to_str().unwrap();
- let _stderr = run_fail(THIN_CHECK, &["--super-block-only", md_path])?;
+ let _stderr = run_fail(THIN_CHECK, args!["--super-block-only", &md])?;
Ok(())
}
@@ -157,8 +154,7 @@ fn detects_corrupt_superblock_with_superblock_only() -> Result<()> {
fn prints_info_fields() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let md_path = md.to_str().unwrap();
- let stdout = run_ok(THIN_CHECK, &[md_path])?;
+ let stdout = run_ok(THIN_CHECK, args![&md])?;
assert!(stdout.contains("TRANSACTION_ID="));
assert!(stdout.contains("METADATA_FREE_BLOCKS="));
Ok(())
@@ -171,20 +167,19 @@ fn prints_info_fields() -> Result<()> {
fn auto_repair_incompatible_opts() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let md_path = md.to_str().unwrap();
- run_fail(THIN_CHECK, &["--auto-repair", "-m", md_path])?;
+ run_fail(THIN_CHECK, args!["--auto-repair", "-m", &md])?;
run_fail(
THIN_CHECK,
- &["--auto-repair", "--override-mapping-root", "123", md_path],
+ args!["--auto-repair", "--override-mapping-root", "123", &md],
)?;
run_fail(
THIN_CHECK,
- &["--auto-repair", "--super-block-only", md_path],
+ args!["--auto-repair", "--super-block-only", &md],
)?;
- run_fail(THIN_CHECK, &["--auto-repair", "--skip-mappings", md_path])?;
+ run_fail(THIN_CHECK, args!["--auto-repair", "--skip-mappings", &md])?;
run_fail(
THIN_CHECK,
- &["--auto-repair", "--ignore-non-fatal-errors", md_path],
+ args!["--auto-repair", "--ignore-non-fatal-errors", &md],
)?;
Ok(())
}
@@ -193,28 +188,23 @@ fn auto_repair_incompatible_opts() -> Result<()> {
fn clear_needs_check_incompatible_opts() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let md_path = md.to_str().unwrap();
- run_fail(THIN_CHECK, &["--clear-needs-check-flag", "-m", md_path])?;
+ run_fail(THIN_CHECK, args!["--clear-needs-check-flag", "-m", &md])?;
run_fail(
THIN_CHECK,
- &[
+ args![
"--clear-needs-check-flag",
"--override-mapping-root",
"123",
- md_path,
+ &md
],
)?;
run_fail(
THIN_CHECK,
- &["--clear-needs-check-flag", "--super-block-only", md_path],
+ args!["--clear-needs-check-flag", "--super-block-only", &md],
)?;
run_fail(
THIN_CHECK,
- &[
- "--clear-needs-check-flag",
- "--ignore-non-fatal-errors",
- md_path,
- ],
+ args!["--clear-needs-check-flag", "--ignore-non-fatal-errors", &md],
)?;
Ok(())
}
@@ -226,12 +216,11 @@ fn clear_needs_check_incompatible_opts() -> Result<()> {
fn clear_needs_check() -> Result<()> {
let mut td = TestDir::new()?;
let md = prep_metadata(&mut td)?;
- let md_path = md.to_str().unwrap();
set_needs_check(&md)?;
assert!(get_needs_check(&md)?);
- run_ok(THIN_CHECK, &["--clear-needs-check-flag", md_path])?;
+ run_ok(THIN_CHECK, args!["--clear-needs-check-flag", &md])?;
assert!(!get_needs_check(&md)?);
Ok(())
}
@@ -240,11 +229,10 @@ fn clear_needs_check() -> Result<()> {
fn no_clear_needs_check_if_error() -> Result<()> {
let mut td = TestDir::new()?;
let md = prep_metadata(&mut td)?;
- let md_path = md.to_str().unwrap();
set_needs_check(&md)?;
generate_metadata_leaks(&md, 1, 0, 1)?;
- run_fail(THIN_CHECK, &["--clear-needs-check-flag", md_path])?;
+ run_fail(THIN_CHECK, args!["--clear-needs-check-flag", &md])?;
assert!(get_needs_check(&md)?);
Ok(())
}
@@ -253,7 +241,6 @@ fn no_clear_needs_check_if_error() -> Result<()> {
fn clear_needs_check_if_skip_mappings() -> Result<()> {
let mut td = TestDir::new()?;
let md = prep_metadata(&mut td)?;
- let md_path = md.to_str().unwrap();
set_needs_check(&md)?;
generate_metadata_leaks(&md, 1, 0, 1)?;
@@ -261,7 +248,7 @@ fn clear_needs_check_if_skip_mappings() -> Result<()> {
assert!(get_needs_check(&md)?);
run_ok(
THIN_CHECK,
- &["--clear-needs-check-flag", "--skip-mappings", md_path],
+ args!["--clear-needs-check-flag", "--skip-mappings", &md],
)?;
assert!(!get_needs_check(&md)?);
Ok(())
@@ -274,10 +261,9 @@ fn clear_needs_check_if_skip_mappings() -> Result<()> {
fn metadata_leaks_are_non_fatal() -> Result<()> {
let mut td = TestDir::new()?;
let md = prep_metadata(&mut td)?;
- let md_path = md.to_str().unwrap();
generate_metadata_leaks(&md, 1, 0, 1)?;
- run_fail(THIN_CHECK, &[md_path])?;
- run_ok(THIN_CHECK, &["--ignore-non-fatal-errors", md_path])?;
+ run_fail(THIN_CHECK, args![&md])?;
+ run_ok(THIN_CHECK, args!["--ignore-non-fatal-errors", &md])?;
Ok(())
}
@@ -285,11 +271,10 @@ fn metadata_leaks_are_non_fatal() -> Result<()> {
fn fatal_errors_cant_be_ignored() -> Result<()> {
let mut td = TestDir::new()?;
let md = prep_metadata(&mut td)?;
- let md_path = md.to_str().unwrap();
generate_metadata_leaks(&md, 1, 1, 0)?;
ensure_untouched(&md, || {
- run_fail(THIN_CHECK, &["--ignore-non-fatal-errors", md_path])?;
+ run_fail(THIN_CHECK, args!["--ignore-non-fatal-errors", &md])?;
Ok(())
})
}
@@ -301,18 +286,17 @@ fn fatal_errors_cant_be_ignored() -> Result<()> {
fn auto_repair() -> Result<()> {
let mut td = TestDir::new()?;
let md = prep_metadata(&mut td)?;
- let md_path = md.to_str().unwrap();
// auto-repair should have no effect on good metadata.
ensure_untouched(&md, || {
- run_ok(THIN_CHECK, &["--auto-repair", md_path])?;
+ run_ok(THIN_CHECK, args!["--auto-repair", &md])?;
Ok(())
})?;
generate_metadata_leaks(&md, 16, 0, 1)?;
- run_fail(THIN_CHECK, &[md_path])?;
- run_ok(THIN_CHECK, &["--auto-repair", md_path])?;
- run_ok(THIN_CHECK, &[md_path])?;
+ run_fail(THIN_CHECK, args![&md])?;
+ run_ok(THIN_CHECK, args!["--auto-repair", &md])?;
+ run_ok(THIN_CHECK, args![&md])?;
Ok(())
}
@@ -320,11 +304,10 @@ fn auto_repair() -> Result<()> {
fn auto_repair_has_limits() -> Result<()> {
let mut td = TestDir::new()?;
let md = prep_metadata(&mut td)?;
- let md_path = md.to_str().unwrap();
generate_metadata_leaks(&md, 16, 1, 0)?;
ensure_untouched(&md, || {
- run_fail(THIN_CHECK, &["--auto-repair", md_path])?;
+ run_fail(THIN_CHECK, args!["--auto-repair", &md])?;
Ok(())
})?;
Ok(())
@@ -334,10 +317,9 @@ fn auto_repair_has_limits() -> Result<()> {
fn auto_repair_clears_needs_check() -> Result<()> {
let mut td = TestDir::new()?;
let md = prep_metadata(&mut td)?;
- let md_path = md.to_str().unwrap();
set_needs_check(&md)?;
- run_ok(THIN_CHECK, &["--auto-repair", md_path])?;
+ run_ok(THIN_CHECK, args!["--auto-repair", &md])?;
assert!(!get_needs_check(&md)?);
Ok(())
}
diff --git a/tests/thin_delta.rs b/tests/thin_delta.rs
index 63e0ce8..a47eacb 100644
--- a/tests/thin_delta.rs
+++ b/tests/thin_delta.rs
@@ -58,7 +58,7 @@ test_rejects_bad_option!(ThinDelta);
fn snap1_unspecified() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let stderr = run_fail(THIN_DELTA, &["--snap2", "45", md.to_str().unwrap()])?;
+ let stderr = run_fail(THIN_DELTA, args!["--snap2", "45", &md])?;
assert!(stderr.contains("--snap1 or --root1 not specified"));
Ok(())
}
@@ -67,14 +67,14 @@ fn snap1_unspecified() -> Result<()> {
fn snap2_unspecified() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let stderr = run_fail(THIN_DELTA, &["--snap1", "45", md.to_str().unwrap()])?;
+ let stderr = run_fail(THIN_DELTA, args!["--snap1", "45", &md])?;
assert!(stderr.contains("--snap2 or --root2 not specified"));
Ok(())
}
#[test]
fn dev_unspecified() -> Result<()> {
- let stderr = run_fail(THIN_DELTA, &["--snap1", "45", "--snap2", "46"])?;
+ let stderr = run_fail(THIN_DELTA, args!["--snap1", "45", "--snap2", "46"])?;
// TODO: replace with msg::MISSING_INPUT_ARG once the rust version is ready
assert!(stderr.contains("No input file provided"));
Ok(())
diff --git a/tests/thin_dump.rs b/tests/thin_dump.rs
index ae11219..8e17e19 100644
--- a/tests/thin_dump.rs
+++ b/tests/thin_dump.rs
@@ -90,8 +90,7 @@ fn dump_restore_cycle() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let md_path = md.to_str().unwrap();
- let output = run_ok_raw(THIN_DUMP, &[md_path])?;
+ let output = run_ok_raw(THIN_DUMP, args![&md])?;
let xml = td.mk_path("meta.xml");
let mut file = OpenOptions::new()
@@ -103,11 +102,9 @@ fn dump_restore_cycle() -> Result<()> {
drop(file);
let md2 = mk_zeroed_md(&mut td)?;
- let md2_path = md2.to_str().unwrap();
- let xml_path = xml.to_str().unwrap();
- run_ok(THIN_RESTORE, &["-i", xml_path, "-o", md2_path])?;
+ run_ok(THIN_RESTORE, args!["-i", &xml, "-o", &md2])?;
- let output2 = run_ok_raw(THIN_DUMP, &[md2_path])?;
+ let output2 = run_ok_raw(THIN_DUMP, args![&md2])?;
assert_eq!(output.stdout, output2.stdout);
Ok(())
@@ -121,8 +118,7 @@ fn no_stderr() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let md_path = md.to_str().unwrap();
- let output = run_ok_raw(THIN_DUMP, &[md_path])?;
+ let output = run_ok_raw(THIN_DUMP, args![&md])?;
assert_eq!(output.stderr.len(), 0);
Ok(())
@@ -135,8 +131,7 @@ fn no_stderr() -> Result<()> {
fn override_something(flag: &str, value: &str, pattern: &str) -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let md_path = md.to_str().unwrap();
- let output = run_ok_raw(THIN_DUMP, &[md_path, flag, value])?;
+ let output = run_ok_raw(THIN_DUMP, args![&md, flag, value])?;
assert_eq!(output.stderr.len(), 0);
assert!(from_utf8(&output.stdout[0..])?.contains(pattern));
@@ -165,23 +160,23 @@ fn repair_superblock() -> Result<()> {
let md = mk_valid_md(&mut td)?;
let before = run_ok_raw(
THIN_DUMP,
- &[
+ args![
"--transaction-id=5",
"--data-block-size=128",
"--nr-data-blocks=4096000",
- md.to_str().unwrap(),
+ &md
],
)?;
damage_superblock(&md)?;
let after = run_ok_raw(
THIN_DUMP,
- &[
+ args![
"--repair",
"--transaction-id=5",
"--data-block-size=128",
"--nr-data-blocks=4096000",
- md.to_str().unwrap(),
+ &md
],
)?;
assert_eq!(after.stderr.len(), 0);
@@ -201,11 +196,11 @@ fn missing_transaction_id() -> Result<()> {
damage_superblock(&md)?;
let stderr = run_fail(
THIN_DUMP,
- &[
+ args![
"--repair",
"--data-block-size=128",
"--nr-data-blocks=4096000",
- md.to_str().unwrap(),
+ &md
],
)?;
assert!(stderr.contains("transaction id"));
@@ -219,11 +214,11 @@ fn missing_data_block_size() -> Result<()> {
damage_superblock(&md)?;
let stderr = run_fail(
THIN_DUMP,
- &[
+ args![
"--repair",
"--transaction-id=5",
"--nr-data-blocks=4096000",
- md.to_str().unwrap(),
+ &md
],
)?;
assert!(stderr.contains("data block size"));
@@ -237,11 +232,11 @@ fn missing_nr_data_blocks() -> Result<()> {
damage_superblock(&md)?;
let stderr = run_fail(
THIN_DUMP,
- &[
+ args![
"--repair",
"--transaction-id=5",
"--data-block-size=128",
- md.to_str().unwrap(),
+ &md
],
)?;
assert!(stderr.contains("nr data blocks"));
diff --git a/tests/thin_metadata_unpack.rs b/tests/thin_metadata_unpack.rs
index 5cd8966..1292965 100644
--- a/tests/thin_metadata_unpack.rs
+++ b/tests/thin_metadata_unpack.rs
@@ -106,17 +106,14 @@ fn end_to_end() -> Result<()> {
let mut td = TestDir::new()?;
let md_in = mk_valid_md(&mut td)?;
let md_out = mk_zeroed_md(&mut td)?;
- run_ok(
- THIN_METADATA_PACK,
- &["-i", md_in.to_str().unwrap(), "-o", "meta.pack"],
- )?;
+ run_ok(THIN_METADATA_PACK, args!["-i", &md_in, "-o", "meta.pack"])?;
run_ok(
THIN_METADATA_UNPACK,
- &["-i", "meta.pack", "-o", md_out.to_str().unwrap()],
+ args!["-i", "meta.pack", "-o", &md_out],
)?;
- let dump1 = run_ok(THIN_DUMP, &[md_in.to_str().unwrap()])?;
- let dump2 = run_ok(THIN_DUMP, &[md_out.to_str().unwrap()])?;
+ let dump1 = run_ok(THIN_DUMP, args![&md_in])?;
+ let dump2 = run_ok(THIN_DUMP, args![&md_out])?;
assert_eq!(dump1, dump2);
Ok(())
}
diff --git a/tests/thin_repair.rs b/tests/thin_repair.rs
index e7a3ef3..19e4865 100644
--- a/tests/thin_repair.rs
+++ b/tests/thin_repair.rs
@@ -100,9 +100,7 @@ fn dont_repair_xml() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_zeroed_md(&mut td)?;
let xml = mk_valid_xml(&mut td)?;
- let xml_path = xml.to_str().unwrap();
- let md_path = md.to_str().unwrap();
- run_fail(THIN_REPAIR, &["-i", xml_path, "-o", md_path])?;
+ run_fail(THIN_REPAIR, args!["-i", &xml, "-o", &md])?;
Ok(())
}
@@ -114,12 +112,9 @@ fn override_thing(flag: &str, val: &str, pattern: &str) -> Result<()> {
let mut td = TestDir::new()?;
let md1 = mk_valid_md(&mut td)?;
let md2 = mk_zeroed_md(&mut td)?;
- let md1_path = md1.to_str().unwrap();
- let md2_path = md2.to_str().unwrap();
- let output = run_ok_raw(THIN_REPAIR, &[flag, val, "-i", md1_path, "-o", md2_path])?;
+ let output = run_ok_raw(THIN_REPAIR, args![flag, val, "-i", &md1, "-o", &md2])?;
assert_eq!(output.stderr.len(), 0);
- let md2_path = md2.to_str().unwrap();
- let output = run_ok(THIN_DUMP, &[md2_path])?;
+ let output = run_ok(THIN_DUMP, args![&md2])?;
assert!(output.contains(pattern));
Ok(())
}
@@ -144,33 +139,31 @@ fn override_nr_data_blocks() -> Result<()> {
fn superblock_succeeds() -> Result<()> {
let mut td = TestDir::new()?;
let md1 = mk_valid_md(&mut td)?;
- let md1_path = md1.to_str().unwrap();
let original = run_ok_raw(
THIN_DUMP,
- &[
+ args![
"--transaction-id=5",
"--data-block-size=128",
"--nr-data-blocks=4096000",
- md1_path,
+ &md1
],
)?;
assert_eq!(original.stderr.len(), 0);
damage_superblock(&md1)?;
let md2 = mk_zeroed_md(&mut td)?;
- let md2_path = md2.to_str().unwrap();
run_ok(
THIN_REPAIR,
- &[
+ args![
"--transaction-id=5",
"--data-block-size=128",
"--nr-data-blocks=4096000",
"-i",
- md1_path,
+ &md1,
"-o",
- md2_path,
+ &md2
],
)?;
- let repaired = run_ok_raw(THIN_DUMP, &[md2_path])?;
+ let repaired = run_ok_raw(THIN_DUMP, args![&md2])?;
assert_eq!(repaired.stderr.len(), 0);
assert_eq!(original.stdout, repaired.stdout);
Ok(())
@@ -185,17 +178,7 @@ fn missing_thing(flag1: &str, flag2: &str, pattern: &str) -> Result<()> {
let md1 = mk_valid_md(&mut td)?;
damage_superblock(&md1)?;
let md2 = mk_zeroed_md(&mut td)?;
- let stderr = run_fail(
- THIN_REPAIR,
- &[
- flag1,
- flag2,
- "-i",
- md1.to_str().unwrap(),
- "-o",
- md2.to_str().unwrap(),
- ],
- )?;
+ let stderr = run_fail(THIN_REPAIR, args![flag1, flag2, "-i", &md1, "-o", &md2])?;
assert!(stderr.contains(pattern));
Ok(())
}
diff --git a/tests/thin_restore.rs b/tests/thin_restore.rs
index 7da5cbf..65ef87a 100644
--- a/tests/thin_restore.rs
+++ b/tests/thin_restore.rs
@@ -102,9 +102,7 @@ fn quiet_flag(flag: &str) -> Result<()> {
let xml = mk_valid_xml(&mut td)?;
let md = mk_zeroed_md(&mut td)?;
- let xml_path = xml.to_str().unwrap();
- let md_path = md.to_str().unwrap();
- let output = run_ok_raw(THIN_RESTORE, &["-i", xml_path, "-o", md_path, flag])?;
+ let output = run_ok_raw(THIN_RESTORE, args!["-i", &xml, "-o", &md, flag])?;
assert_eq!(output.stdout.len(), 0);
assert_eq!(output.stderr.len(), 0);
@@ -130,11 +128,9 @@ fn override_something(flag: &str, value: &str, pattern: &str) -> Result<()> {
let xml = mk_valid_xml(&mut td)?;
let md = mk_zeroed_md(&mut td)?;
- let xml_path = xml.to_str().unwrap();
- let md_path = md.to_str().unwrap();
- run_ok(THIN_RESTORE, &["-i", xml_path, "-o", md_path, flag, value])?;
+ run_ok(THIN_RESTORE, args!["-i", &xml, "-o", &md, flag, value])?;
- let output = run_ok(THIN_DUMP, &[md_path])?;
+ let output = run_ok(THIN_DUMP, args![&md])?;
assert!(output.contains(pattern));
Ok(())
}
diff --git a/tests/thin_rmap.rs b/tests/thin_rmap.rs
index 1fa2a66..8b58e28 100644
--- a/tests/thin_rmap.rs
+++ b/tests/thin_rmap.rs
@@ -58,8 +58,7 @@ test_rejects_bad_option!(ThinRmap);
fn valid_region_format_should_pass() -> Result<()> {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- let md_path = md.to_str().unwrap();
- run_ok(THIN_RMAP, &["--region", "23..7890", md_path])?;
+ run_ok(THIN_RMAP, args!["--region", "23..7890", &md])?;
Ok(())
}
@@ -78,7 +77,7 @@ fn invalid_regions_should_fail() -> Result<()> {
for r in &invalid_regions {
let mut td = TestDir::new()?;
let md = mk_valid_md(&mut td)?;
- run_fail(THIN_RMAP, &[&r.to_string(), md.to_str().unwrap()])?;
+ run_fail(THIN_RMAP, args![r, &md])?;
}
Ok(())
}
@@ -89,13 +88,7 @@ fn multiple_regions_should_pass() -> Result<()> {
let md = mk_valid_md(&mut td)?;
run_ok(
THIN_RMAP,
- &[
- "--region",
- "1..23",
- "--region",
- "45..78",
- md.to_str().unwrap(),
- ],
+ args!["--region", "1..23", "--region", "45..78", &md],
)?;
Ok(())
}
@@ -104,7 +97,7 @@ fn multiple_regions_should_pass() -> Result<()> {
fn junk_input() -> Result<()> {
let mut td = TestDir::new()?;
let xml = mk_valid_xml(&mut td)?;
- run_fail(THIN_RMAP, &["--region", "0..-1", xml.to_str().unwrap()])?;
+ run_fail(THIN_RMAP, args!["--region", "0..-1", &xml])?;
Ok(())
}