Skip to content

Commit ca55e8c

Browse files
committed
#191 parameterize tests to include no-swap flag
1 parent 0bdf62d commit ca55e8c

File tree

2 files changed

+50
-29
lines changed

2 files changed

+50
-29
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ clap = { version = "4.2.7", features = ["derive", "deprecated", "wrap_help"] }
2727
[dev-dependencies]
2828
assert_cmd = "1.0.3"
2929
anyhow = "1.0.38"
30+
rstest = "0.17.0"
3031

3132
[build-dependencies]
3233
clap = "4.2.7"

tests/cli.rs

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
mod cli {
44
use anyhow::Result;
55
use assert_cmd::Command;
6+
use rstest::rstest;
67
use std::io::prelude::*;
78

89
fn sd() -> Command {
@@ -25,36 +26,46 @@ mod cli {
2526
Ok(())
2627
}
2728

28-
#[test]
29-
fn in_place() -> Result<()> {
29+
#[rstest]
30+
fn in_place(#[values(false, true)] no_swap: bool) -> Result<()> {
3031
let mut file = tempfile::NamedTempFile::new()?;
3132
file.write_all(b"abc123def")?;
3233
let path = file.into_temp_path();
3334

34-
sd().args(["abc\\d+", "", path.to_str().unwrap()])
35-
.assert()
36-
.success();
35+
let mut cmd = sd();
36+
cmd.args(["abc\\d+", "", path.to_str().unwrap()]);
37+
if no_swap {
38+
cmd.arg("--no-swap");
39+
}
40+
cmd.assert().success();
3741
assert_file(&path, "def");
3842

3943
Ok(())
4044
}
4145

42-
#[test]
43-
fn in_place_with_empty_result_file() -> Result<()> {
46+
#[rstest]
47+
fn in_place_with_empty_result_file(
48+
#[values(false, true)] no_swap: bool,
49+
) -> Result<()> {
4450
let mut file = tempfile::NamedTempFile::new()?;
4551
file.write_all(b"a7c")?;
4652
let path = file.into_temp_path();
4753

48-
sd().args(["a\\dc", "", path.to_str().unwrap()])
49-
.assert()
50-
.success();
54+
let mut cmd = sd();
55+
cmd.args(["a\\dc", "", path.to_str().unwrap()]);
56+
if no_swap {
57+
cmd.arg("--no-swap");
58+
}
59+
cmd.assert().success();
5160
assert_file(&path, "");
5261

5362
Ok(())
5463
}
5564

56-
#[test]
57-
fn in_place_following_symlink() -> Result<()> {
65+
#[rstest]
66+
fn in_place_following_symlink(
67+
#[values(false, true)] no_swap: bool,
68+
) -> Result<()> {
5869
let dir = tempfile::tempdir()?;
5970
let path = dir.path();
6071
let file = path.join("file");
@@ -63,39 +74,48 @@ mod cli {
6374
create_soft_link(&file, &link)?;
6475
std::fs::write(&file, "abc123def")?;
6576

66-
sd().args(["abc\\d+", "", link.to_str().unwrap()])
67-
.assert()
68-
.success();
77+
let mut cmd = sd();
78+
cmd.args(["abc\\d+", "", link.to_str().unwrap()]);
79+
if no_swap {
80+
cmd.arg("--no-swap");
81+
}
82+
cmd.assert().success();
6983

7084
assert_file(&file, "def");
7185
assert!(std::fs::symlink_metadata(link)?.file_type().is_symlink());
7286

7387
Ok(())
7488
}
7589

76-
#[test]
77-
fn replace_into_stdout() -> Result<()> {
90+
#[rstest]
91+
fn replace_into_stdout(#[values(false, true)] no_swap: bool) -> Result<()> {
7892
let mut file = tempfile::NamedTempFile::new()?;
7993
file.write_all(b"abc123def")?;
8094

81-
sd().args(["-p", "abc\\d+", "", file.path().to_str().unwrap()])
82-
.assert()
83-
.success()
84-
.stdout(format!(
85-
"{}{}def\n",
86-
ansi_term::Color::Green.prefix(),
87-
ansi_term::Color::Green.suffix()
88-
));
95+
let mut cmd = sd();
96+
cmd.args(["-p", "abc\\d+", "", file.path().to_str().unwrap()]);
97+
if no_swap {
98+
cmd.arg("--no-swap");
99+
}
100+
cmd.assert().success().stdout(format!(
101+
"{}{}def\n",
102+
ansi_term::Color::Green.prefix(),
103+
ansi_term::Color::Green.suffix()
104+
));
89105

90106
assert_file(file.path(), "abc123def");
91107

92108
Ok(())
93109
}
94110

95-
#[test]
96-
fn stdin() -> Result<()> {
97-
sd().args(["abc\\d+", ""])
98-
.write_stdin("abc123def")
111+
#[rstest]
112+
fn stdin(#[values(false, true)] no_swap: bool) -> Result<()> {
113+
let mut cmd = sd();
114+
cmd.args(["abc\\d+", ""]);
115+
if no_swap {
116+
cmd.arg("--no-swap");
117+
}
118+
cmd.write_stdin("abc123def")
99119
.assert()
100120
.success()
101121
.stdout("def");

0 commit comments

Comments
 (0)