Use a helper function to extract stdout/stderr/exit code
- ID
20431ef- date
2021-11-27 08:20:11+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
0dee0e0- message
Use a helper function to extract stdout/stderr/exit code- changed files
1 file, 25 additions, 24 deletions
Changed files
src/main.rs (6598) → src/main.rs (6582)
diff --git a/src/main.rs b/src/main.rs
index c8c63bd..857a930 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -97,7 +97,6 @@ fn main() {
#[cfg(test)]
mod tests {
use std::str;
- use std::process::Output;
use assert_cmd::assert::OutputAssertExt;
use assert_cmd::Command;
@@ -109,48 +108,44 @@ mod tests {
fn it_prints_the_color_with_ansi_escape_codes() {
let output = get_success(&["./src/tests/red.png", "--count=1"]);
- assert_eq!(output.status.code().unwrap(), 0);
+ assert_eq!(output.exit_code, 0);
- let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(
- stdout == "\u{1b}[38;2;255;0;0m▇ #ff0000\u{1b}[0m\n" ||
- stdout == "\u{1b}[38;2;254;0;0m▇ #fe0000\u{1b}[0m\n",
- "stdout = {:?}", stdout
+ output.stdout == "\u{1b}[38;2;255;0;0m▇ #ff0000\u{1b}[0m\n" ||
+ output.stdout == "\u{1b}[38;2;254;0;0m▇ #fe0000\u{1b}[0m\n",
+ "stdout = {:?}", output.stdout
);
- assert_eq!(str::from_utf8(&output.stderr).unwrap(), "");
+ assert_eq!(output.stderr, "");
}
#[test]
fn it_omits_the_escape_codes_with_no_palette() {
let output = get_success(&["./src/tests/red.png", "--count=1"]);
- assert_eq!(output.status.code().unwrap(), 0);
+ assert_eq!(output.exit_code, 0);
- let stdout = str::from_utf8(&output.stdout).unwrap();
assert!(
- stdout == "\u{1b}[38;2;255;0;0m▇ #ff0000\u{1b}[0m\n" ||
- stdout == "\u{1b}[38;2;254;0;0m▇ #fe0000\u{1b}[0m\n",
- "stdout = {:?}", stdout
+ output.stdout == "\u{1b}[38;2;255;0;0m▇ #ff0000\u{1b}[0m\n" ||
+ output.stdout == "\u{1b}[38;2;254;0;0m▇ #fe0000\u{1b}[0m\n",
+ "stdout = {:?}", output.stdout
);
- assert_eq!(str::from_utf8(&output.stderr).unwrap(), "");
+ assert_eq!(output.stderr, "");
}
#[test]
fn it_defaults_to_five_colours() {
let output = get_success(&["./src/tests/noise.jpg"]);
- let stdout = str::from_utf8(&output.stdout).unwrap();
- assert_eq!(stdout.matches("\n").count(), 5, "stdout = {:?}", stdout);
+ assert_eq!(output.stdout.matches("\n").count(), 5, "stdout = {:?}", output.stdout);
}
#[test]
fn it_lets_you_choose_the_count() {
let output = get_success(&["./src/tests/noise.jpg", "--count=8"]);
- let stdout = str::from_utf8(&output.stdout).unwrap();
- assert_eq!(stdout.matches("\n").count(), 8, "stdout = {:?}", stdout);
+ assert_eq!(output.stdout.matches("\n").count(), 8, "stdout = {:?}", output.stdout);
}
#[test]
@@ -164,19 +159,25 @@ mod tests {
struct DcOutput {
exit_code: i32,
- stdout: &str,
- stderr: &str,
+ stdout: String,
+ stderr: String,
}
- fn get_success(args: &[&str]) -> Output {
+ fn get_success(args: &[&str]) -> DcOutput {
let mut cmd = Command::cargo_bin("dominant_colours").unwrap();
- cmd
+ let output = cmd
.args(args)
.unwrap()
.assert()
.success()
.get_output()
- .to_owned()
+ .to_owned();
+
+ DcOutput {
+ exit_code: output.status.code().unwrap(),
+ stdout: str::from_utf8(&output.stdout).unwrap().to_owned(),
+ stderr: str::from_utf8(&output.stderr).unwrap().to_owned(),
+ }
}
fn get_failure(args: &[&str]) -> DcOutput {
@@ -190,8 +191,8 @@ mod tests {
DcOutput {
exit_code: output.status.code().unwrap(),
- stdout: str::from_utf8(&output.stdout).unwrap(),
- stderr: str::from_utf8(&output.stderr).unwrap(),
+ stdout: str::from_utf8(&output.stdout).unwrap().to_owned(),
+ stderr: str::from_utf8(&output.stderr).unwrap().to_owned(),
}
}
}