Replace colored_diff with pretty_assertions (#440)
This commit is contained in:
parent
d46e6d86a6
commit
22e96447b4
21
Cargo.lock
generated
21
Cargo.lock
generated
@ -96,16 +96,6 @@ dependencies = [
|
|||||||
"vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"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]]
|
[[package]]
|
||||||
name = "ctor"
|
name = "ctor"
|
||||||
version = "0.1.9"
|
version = "0.1.9"
|
||||||
@ -204,14 +194,6 @@ dependencies = [
|
|||||||
"quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"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]]
|
[[package]]
|
||||||
name = "itertools"
|
name = "itertools"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
@ -229,7 +211,6 @@ dependencies = [
|
|||||||
"atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
"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)",
|
"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)",
|
"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)",
|
"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)",
|
"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)",
|
"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 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 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 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 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 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"
|
"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 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 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 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 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 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"
|
"checksum libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "c6785aa7dd976f5fbf3b71cfd9cd49d7f783c1ff565a858d71031c6c313aa5c6"
|
||||||
|
@ -30,6 +30,5 @@ version = "3.1.2"
|
|||||||
features = ["termination"]
|
features = ["termination"]
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
colored-diff = "0.2.1"
|
|
||||||
executable-path = "1.0.0"
|
executable-path = "1.0.0"
|
||||||
pretty_assertions = "0.6.1"
|
pretty_assertions = "0.6.1"
|
||||||
|
@ -1,14 +1,22 @@
|
|||||||
use colored_diff::PrettyDifference;
|
|
||||||
use executable_path::executable_path;
|
use executable_path::executable_path;
|
||||||
use libc::{EXIT_FAILURE, EXIT_SUCCESS};
|
use libc::{EXIT_FAILURE, EXIT_SUCCESS};
|
||||||
|
use pretty_assertions::assert_eq;
|
||||||
use std::{
|
use std::{
|
||||||
env, fs,
|
env, fs,
|
||||||
io::Write,
|
io::Write,
|
||||||
|
path::Path,
|
||||||
process::{Command, Stdio},
|
process::{Command, Stdio},
|
||||||
str,
|
str,
|
||||||
};
|
};
|
||||||
use tempdir::TempDir;
|
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
|
/// Instantiate integration tests for a given test case using
|
||||||
/// sh, dash, and bash.
|
/// sh, dash, and bash.
|
||||||
///
|
///
|
||||||
@ -85,88 +93,61 @@ fn integration_test(
|
|||||||
.wait_with_output()
|
.wait_with_output()
|
||||||
.expect("failed to wait for just process");
|
.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();
|
let want = Output {
|
||||||
if status != expected_status {
|
status: expected_status,
|
||||||
println!("bad status: {} != {}", status, expected_status);
|
stdout: expected_stdout,
|
||||||
failure = true;
|
stderr: expected_stderr,
|
||||||
}
|
};
|
||||||
|
|
||||||
let stdout = str::from_utf8(&output.stdout).unwrap();
|
assert_eq!(have, want, "bad output");
|
||||||
|
|
||||||
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");
|
|
||||||
}
|
|
||||||
|
|
||||||
if expected_status == EXIT_SUCCESS {
|
if expected_status == EXIT_SUCCESS {
|
||||||
println!("Reparsing...");
|
test_round_trip(tmp.path());
|
||||||
|
|
||||||
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
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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! {
|
integration_test! {
|
||||||
name: alias_listing,
|
name: alias_listing,
|
||||||
justfile: "foo:\n echo foo\nalias f := foo",
|
justfile: "foo:\n echo foo\nalias f := foo",
|
||||||
|
Loading…
Reference in New Issue
Block a user