Skip to content

Commit 064f057

Browse files
committed
Improve integration testing
1 parent 75c06bb commit 064f057

1 file changed

Lines changed: 13 additions & 18 deletions

File tree

tests/integration_tests.rs

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::{
55
};
66

77
enum Output<'a> {
8-
FullStdout(&'a str),
8+
FullStdout(&'a [u8]),
99
PartialStdout(&'a str),
1010
PartialStderr(&'a str),
1111
}
@@ -61,32 +61,27 @@ impl<'a> Cmd<'a> {
6161

6262
cmd.args(self.args).stdin(Stdio::null());
6363

64-
let output = match self.output {
65-
None => cmd.output().unwrap(),
64+
let output = cmd.output().unwrap();
65+
match self.output {
66+
None => (),
6667
Some(FullStdout(stdout)) => {
67-
let output = cmd.stderr(Stdio::null()).output().unwrap();
68-
assert_eq!(from_utf8(&output.stdout).unwrap(), stdout);
69-
output
68+
assert_eq!(output.stdout, stdout);
7069
}
7170
Some(PartialStdout(stdout)) => {
72-
let output = cmd.stderr(Stdio::null()).output().unwrap();
7371
assert!(from_utf8(&output.stdout).unwrap().contains(stdout));
74-
output
7572
}
7673
Some(PartialStderr(stderr)) => {
77-
let output = cmd.stdout(Stdio::null()).output().unwrap();
7874
assert!(from_utf8(&output.stderr).unwrap().contains(stderr));
79-
output
8075
}
8176
};
8277

83-
assert_eq!(
84-
output.status.success(),
85-
success,
86-
"{cmd:?}\n\nstdout:\n{}\nstderr:\n{}",
87-
from_utf8(&output.stdout).unwrap(),
88-
from_utf8(&output.stderr).unwrap(),
89-
);
78+
if output.status.success() != success {
79+
panic!(
80+
"{cmd:?}\n\nstdout:\n{}\n\nstderr:\n{}",
81+
from_utf8(&output.stdout).unwrap(),
82+
from_utf8(&output.stderr).unwrap(),
83+
);
84+
}
9085
}
9186

9287
#[inline]
@@ -153,7 +148,7 @@ fn hint() {
153148
Cmd::default()
154149
.current_dir("tests/test_exercises")
155150
.args(&["hint", "test_failure"])
156-
.output(FullStdout("The answer to everything: 42\n"))
151+
.output(FullStdout(b"The answer to everything: 42\n"))
157152
.success();
158153
}
159154

0 commit comments

Comments
 (0)