From 22e96447b4cffa98196ef1cfbcaa47ca14f84b60 Mon Sep 17 00:00:00 2001 From: Casey Rodarmor Date: Wed, 15 May 2019 14:38:36 -0400 Subject: [PATCH] Replace colored_diff with pretty_assertions (#440) --- Cargo.lock | 21 ------- Cargo.toml | 1 - tests/integration.rs | 133 +++++++++++++++++++------------------------ 3 files changed, 57 insertions(+), 98 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c072164..e6a2ccf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -96,16 +96,6 @@ dependencies = [ "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "colored-diff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "ctor" version = "0.1.9" @@ -204,14 +194,6 @@ dependencies = [ "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "itertools" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "itertools" version = "0.8.0" @@ -229,7 +211,6 @@ dependencies = [ "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "brev 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "colored-diff 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "ctrlc 3.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "dotenv 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "edit-distance 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -558,7 +539,6 @@ dependencies = [ "checksum cc 1.0.36 (registry+https://github.com/rust-lang/crates.io-index)" = "a0c56216487bb80eec9c4516337b2588a4f2a2290d72a1416d930e4dcdb0c90d" "checksum cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "11d43355396e872eefb45ce6342e4374ed7bc2b3a502d1b28e36d6e23c05d1f4" "checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" -"checksum colored-diff 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fcbd90537dc19162289fbce7e95c882dded30f4ed41044cf1470612528d7163" "checksum ctor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3b4c17619643c1252b5f690084b82639dd7fac141c57c8e77a00e0148132092c" "checksum ctrlc 3.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5531b7f0698d9220b4729f8811931dbe0e91a05be2f7b3245fdc50dd856bae26" "checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" @@ -572,7 +552,6 @@ dependencies = [ "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" -"checksum itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d" "checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358" "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" "checksum libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "c6785aa7dd976f5fbf3b71cfd9cd49d7f783c1ff565a858d71031c6c313aa5c6" diff --git a/Cargo.toml b/Cargo.toml index 9276e46..6cafc26 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,6 +30,5 @@ version = "3.1.2" features = ["termination"] [dev-dependencies] -colored-diff = "0.2.1" executable-path = "1.0.0" pretty_assertions = "0.6.1" diff --git a/tests/integration.rs b/tests/integration.rs index 07b54ad..1062cb0 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -1,14 +1,22 @@ -use colored_diff::PrettyDifference; use executable_path::executable_path; use libc::{EXIT_FAILURE, EXIT_SUCCESS}; +use pretty_assertions::assert_eq; use std::{ env, fs, io::Write, + path::Path, process::{Command, Stdio}, str, }; use tempdir::TempDir; +#[derive(PartialEq, Debug)] +struct Output<'a> { + stdout: &'a str, + stderr: &'a str, + status: i32, +} + /// Instantiate integration tests for a given test case using /// sh, dash, and bash. /// @@ -85,88 +93,61 @@ fn integration_test( .wait_with_output() .expect("failed to wait for just process"); - let mut failure = false; + let have = Output { + status: output.status.code().unwrap(), + stdout: str::from_utf8(&output.stdout).unwrap(), + stderr: str::from_utf8(&output.stderr).unwrap(), + }; - let status = output.status.code().unwrap(); - if status != expected_status { - println!("bad status: {} != {}", status, expected_status); - failure = true; - } + let want = Output { + status: expected_status, + stdout: expected_stdout, + stderr: expected_stderr, + }; - let stdout = str::from_utf8(&output.stdout).unwrap(); - - if stdout != expected_stdout { - println!( - "bad stdout:\n {}", - PrettyDifference { - expected: expected_stdout, - actual: stdout - }, - ); - failure = true; - } - - let stderr = str::from_utf8(&output.stderr).unwrap(); - if stderr != expected_stderr { - println!( - "bad stderr: {}", - PrettyDifference { - expected: expected_stderr, - actual: stderr - }, - ); - failure = true; - } - - if failure { - panic!("test failed"); - } + assert_eq!(have, want, "bad output"); if expected_status == EXIT_SUCCESS { - println!("Reparsing..."); - - let output = Command::new(&executable_path("just")) - .current_dir(tmp.path()) - .arg("--dump") - .output() - .expect("just invocation failed"); - - if !output.status.success() { - panic!("dump failed: {}", output.status); - } - - let dumped = String::from_utf8(output.stdout).unwrap(); - - let reparsed_path = tmp.path().join("reparsed.just"); - - fs::write(&reparsed_path, &dumped).unwrap(); - - let output = Command::new(&executable_path("just")) - .current_dir(tmp.path()) - .arg("--justfile") - .arg(&reparsed_path) - .arg("--dump") - .output() - .expect("just invocation failed"); - - if !output.status.success() { - panic!("reparse failed: {}", output.status); - } - - let reparsed = String::from_utf8(output.stdout).unwrap(); - - if reparsed != dumped { - println!( - "reparse mismatch:\n {}", - PrettyDifference { - expected: &dumped, - actual: &reparsed - }, - ); - } + test_round_trip(tmp.path()); } } +fn test_round_trip(tmpdir: &Path) { + println!("Reparsing..."); + + let output = Command::new(&executable_path("just")) + .current_dir(tmpdir) + .arg("--dump") + .output() + .expect("just invocation failed"); + + if !output.status.success() { + panic!("dump failed: {}", output.status); + } + + let dumped = String::from_utf8(output.stdout).unwrap(); + + let reparsed_path = tmpdir.join("reparsed.just"); + + fs::write(&reparsed_path, &dumped).unwrap(); + + let output = Command::new(&executable_path("just")) + .current_dir(tmpdir) + .arg("--justfile") + .arg(&reparsed_path) + .arg("--dump") + .output() + .expect("just invocation failed"); + + if !output.status.success() { + panic!("reparse failed: {}", output.status); + } + + let reparsed = String::from_utf8(output.stdout).unwrap(); + + assert_eq!(reparsed, dumped, "reparse mismatch"); +} + integration_test! { name: alias_listing, justfile: "foo:\n echo foo\nalias f := foo",