Strip out the fancy macros
- ID
3452d0b- date
2025-01-07 18:41:11+00:00- author
Alex Chan <alex@alexwlchan.net>- parent
24cf026- message
Strip out the fancy macros- changed files
1 file, 60 additions, 67 deletions
Changed files
src/main.rs (6550) → src/main.rs (6408)
diff --git a/src/main.rs b/src/main.rs
index 9a71c4c..7b063c8 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -58,59 +58,69 @@ fn main() {
mod test_cli {
use std::path::PathBuf;
+ use assert_cmd::Command;
use predicates::prelude::*;
- use crate::run_command;
use crate::test_utils::get_dimensions;
#[test]
fn it_creates_a_thumbnail_with_max_width() {
- let result = run_command!("src/tests/red.png", "--width=50", "--out-dir=/tmp");
-
- result.success().stdout("/tmp/red.png").stderr("");
+ Command::cargo_bin("create_thumbnail")
+ .unwrap()
+ .args(&["src/tests/red.png", "--width=50", "--out-dir=/tmp"])
+ .assert()
+ .success()
+ .stdout("/tmp/red.png")
+ .stderr("");
assert_eq!(get_dimensions(&PathBuf::from("/tmp/red.png")), (50, 100));
}
#[test]
fn it_creates_a_thumbnail_with_max_height() {
- let result = run_command!("src/tests/noise.jpg", "--height=128", "--out-dir=/tmp");
-
- result.success().stdout("/tmp/noise.jpg").stderr("");
+ Command::cargo_bin("create_thumbnail")
+ .unwrap()
+ .args(&["src/tests/noise.jpg", "--height=128", "--out-dir=/tmp"])
+ .assert()
+ .success()
+ .stdout("/tmp/noise.jpg")
+ .stderr("");
assert_eq!(get_dimensions(&PathBuf::from("/tmp/noise.jpg")), (64, 128));
}
#[test]
fn it_fails_if_you_pass_width_and_height() {
- let result = run_command!(
- "src/tests/red.png",
- "--width=100",
- "--height=100",
- "--out-dir=/tmp",
- );
-
- let is_invalid_args_err = predicate::str::is_match(
+ let invalid_args = predicate::str::is_match(
r"the argument '--width <WIDTH>' cannot be used with '--height <HEIGHT>'",
)
.unwrap();
- result
+ Command::cargo_bin("create_thumbnail")
+ .unwrap()
+ .args(&[
+ "src/tests/red.png",
+ "--width=100",
+ "--height=100",
+ "--out-dir=/tmp",
+ ])
+ .assert()
.failure()
.code(2)
.stdout("")
- .stderr(is_invalid_args_err);
+ .stderr(invalid_args);
}
#[test]
fn it_fails_if_you_pass_neither_width_nor_height() {
- let result = run_command!("src/tests/red.png", "--out-dir=/tmp");
-
let is_missing_args_err =
predicate::str::is_match(r"the following required arguments were not provided:")
.unwrap();
- result
+ Command::cargo_bin("create_thumbnail")
+ .unwrap()
+ .args(&["src/tests/red.png", "--out-dir=/tmp"])
+ .assert()
.failure()
.code(2)
.stdout("")
@@ -119,9 +129,10 @@ mod test_cli {
#[test]
fn it_fails_if_you_pass_a_non_existent_file() {
- let result = run_command!("doesnotexist.txt", "--width=50", "--out-dir=/tmp");
-
- result
+ Command::cargo_bin("create_thumbnail")
+ .unwrap()
+ .args(&["doesnotexist.txt", "--width=50", "--out-dir=/tmp"])
+ .assert()
.failure()
.code(1)
.stdout("")
@@ -130,9 +141,10 @@ mod test_cli {
#[test]
fn it_fails_if_you_pass_a_non_image() {
- let result = run_command!("Cargo.toml", "--width=50", "--out-dir=/tmp");
-
- result
+ Command::cargo_bin("create_thumbnail")
+ .unwrap()
+ .args(&["Cargo.toml", "--width=50", "--out-dir=/tmp"])
+ .assert()
.failure()
.code(1)
.stdout("")
@@ -145,9 +157,10 @@ mod test_cli {
// we'd return a more meaningful error message in this case.
#[test]
fn it_fails_if_out_dir_is_a_file() {
- let result = run_command!("src/images/noise.jpg", "--width=50", "--out-dir=README.md");
-
- result
+ Command::cargo_bin("create_thumbnail")
+ .unwrap()
+ .args(&["src/images/noise.jpg", "--width=50", "--out-dir=README.md"])
+ .assert()
.failure()
.code(1)
.stdout("")
@@ -156,9 +169,10 @@ mod test_cli {
#[test]
fn it_fails_if_you_try_to_overwrite_the_original_file() {
- let result = run_command!("src/images/noise.jpg", "--width=50", "--out-dir=src/images");
-
- result
+ Command::cargo_bin("create_thumbnail")
+ .unwrap()
+ .args(&["src/images/noise.jpg", "--width=50", "--out-dir=src/images"])
+ .assert()
.failure()
.code(1)
.stdout("")
@@ -167,23 +181,31 @@ mod test_cli {
#[test]
fn it_prints_the_version() {
- let result = run_command!("--version");
-
// Match strings like `create_thumbnail 1.2.3`
let is_version_string =
predicate::str::is_match(r"^create_thumbnail [0-9]+\.[0-9]+\.[0-9]+\n$").unwrap();
- result.success().stdout(is_version_string).stderr("");
+ Command::cargo_bin("create_thumbnail")
+ .unwrap()
+ .arg("--version")
+ .assert()
+ .success()
+ .stdout(is_version_string)
+ .stderr("");
}
#[test]
fn it_prints_the_help() {
- let result = run_command!("--help");
-
// Match strings like `dominant_colours 1.2.3`
let is_help_text = predicate::str::is_match(r"create_thumbnail --out-dir").unwrap();
- result.success().stdout(is_help_text).stderr("");
+ Command::cargo_bin("create_thumbnail")
+ .unwrap()
+ .arg("--help")
+ .assert()
+ .success()
+ .stdout(is_help_text)
+ .stderr("");
}
}
@@ -209,32 +231,3 @@ pub mod test_utils {
img.dimensions()
}
}
-
-#[cfg(test)]
-#[macro_use]
-mod test_helpers {
- /// Run this command-line tool with zero or more arguments:
- ///
- /// run_command!();
- /// run_command!("shape.png");
- /// run_command!("shape.png", "--sides=4", "--colour=red");
- ///
- /// This returns an `assert_cmd::assert::Assert` that will allow
- /// you to make assertions about the output.
- /// See https://docs.rs/assert_cmd/latest/assert_cmd/assert/struct.Assert.html
- #[macro_export]
- macro_rules! run_command {
- () => {
- assert_cmd::Command::cargo_bin(env!("CARGO_PKG_NAME"))
- .unwrap()
- .assert()
- };
-
- ($($arg:expr),+ $(,)?) => {{
- assert_cmd::Command::cargo_bin(env!("CARGO_PKG_NAME"))
- .unwrap()
- .args(&[$($arg),*])
- .assert()
- }};
- }
-}