mirror of
https://github.com/rust-lang/rustlings.git
synced 2026-03-31 03:29:19 +00:00
Improve integration testing
This commit is contained in:
parent
75c06bb7f4
commit
064f057b10
@ -5,7 +5,7 @@ use std::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum Output<'a> {
|
enum Output<'a> {
|
||||||
FullStdout(&'a str),
|
FullStdout(&'a [u8]),
|
||||||
PartialStdout(&'a str),
|
PartialStdout(&'a str),
|
||||||
PartialStderr(&'a str),
|
PartialStderr(&'a str),
|
||||||
}
|
}
|
||||||
@ -61,33 +61,28 @@ impl<'a> Cmd<'a> {
|
|||||||
|
|
||||||
cmd.args(self.args).stdin(Stdio::null());
|
cmd.args(self.args).stdin(Stdio::null());
|
||||||
|
|
||||||
let output = match self.output {
|
let output = cmd.output().unwrap();
|
||||||
None => cmd.output().unwrap(),
|
match self.output {
|
||||||
|
None => (),
|
||||||
Some(FullStdout(stdout)) => {
|
Some(FullStdout(stdout)) => {
|
||||||
let output = cmd.stderr(Stdio::null()).output().unwrap();
|
assert_eq!(output.stdout, stdout);
|
||||||
assert_eq!(from_utf8(&output.stdout).unwrap(), stdout);
|
|
||||||
output
|
|
||||||
}
|
}
|
||||||
Some(PartialStdout(stdout)) => {
|
Some(PartialStdout(stdout)) => {
|
||||||
let output = cmd.stderr(Stdio::null()).output().unwrap();
|
|
||||||
assert!(from_utf8(&output.stdout).unwrap().contains(stdout));
|
assert!(from_utf8(&output.stdout).unwrap().contains(stdout));
|
||||||
output
|
|
||||||
}
|
}
|
||||||
Some(PartialStderr(stderr)) => {
|
Some(PartialStderr(stderr)) => {
|
||||||
let output = cmd.stdout(Stdio::null()).output().unwrap();
|
|
||||||
assert!(from_utf8(&output.stderr).unwrap().contains(stderr));
|
assert!(from_utf8(&output.stderr).unwrap().contains(stderr));
|
||||||
output
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_eq!(
|
if output.status.success() != success {
|
||||||
output.status.success(),
|
panic!(
|
||||||
success,
|
"{cmd:?}\n\nstdout:\n{}\n\nstderr:\n{}",
|
||||||
"{cmd:?}\n\nstdout:\n{}\nstderr:\n{}",
|
|
||||||
from_utf8(&output.stdout).unwrap(),
|
from_utf8(&output.stdout).unwrap(),
|
||||||
from_utf8(&output.stderr).unwrap(),
|
from_utf8(&output.stderr).unwrap(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
#[track_caller]
|
#[track_caller]
|
||||||
@ -153,7 +148,7 @@ fn hint() {
|
|||||||
Cmd::default()
|
Cmd::default()
|
||||||
.current_dir("tests/test_exercises")
|
.current_dir("tests/test_exercises")
|
||||||
.args(&["hint", "test_failure"])
|
.args(&["hint", "test_failure"])
|
||||||
.output(FullStdout("The answer to everything: 42\n"))
|
.output(FullStdout(b"The answer to everything: 42\n"))
|
||||||
.success();
|
.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user