verify test outputs

This commit is contained in:
figsoda 2023-01-03 14:18:10 -05:00
parent 2eca41bb0a
commit 022c339491
3 changed files with 124 additions and 0 deletions

85
Cargo.lock generated
View File

@ -8,6 +8,20 @@ version = "1.0.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
[[package]]
name = "assert_cmd"
version = "2.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa3d466004a8b4cb1bc34044240a2fd29d17607e2e3bd613eb44fd48e8100da3"
dependencies = [
"bstr",
"doc-comment",
"predicates",
"predicates-core",
"predicates-tree",
"wait-timeout",
]
[[package]]
name = "atty"
version = "0.2.14"
@ -31,6 +45,18 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bstr"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b"
dependencies = [
"memchr",
"once_cell",
"regex-automata",
"serde",
]
[[package]]
name = "cc"
version = "1.0.78"
@ -171,6 +197,18 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "difflib"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
[[package]]
name = "doc-comment"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
[[package]]
name = "dunce"
version = "1.0.3"
@ -412,6 +450,12 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
[[package]]
name = "nu-glob"
version = "0.73.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "611efd57cc139f149eff12415368b819581c0b0e86944bc8011753e5680a674d"
[[package]]
name = "num_cpus"
version = "1.15.0"
@ -427,11 +471,13 @@ name = "nurl"
version = "0.3.1"
dependencies = [
"anyhow",
"assert_cmd",
"clap",
"clap_complete",
"clap_mangen",
"enum_dispatch",
"itertools",
"nu-glob",
"once_cell",
"owo-colors",
"rustc-hash",
@ -478,6 +524,33 @@ version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]]
name = "predicates"
version = "2.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd"
dependencies = [
"difflib",
"itertools",
"predicates-core",
]
[[package]]
name = "predicates-core"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72f883590242d3c6fc5bf50299011695fa6590c2c70eac95ee1bdb9a733ad1a2"
[[package]]
name = "predicates-tree"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54ff541861505aabf6ea722d2131ee980b8276e10a1297b94e896dd8b621850d"
dependencies = [
"predicates-core",
"termtree",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
@ -551,6 +624,12 @@ dependencies = [
"bitflags",
]
[[package]]
name = "regex-automata"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
[[package]]
name = "remove_dir_all"
version = "0.5.3"
@ -738,6 +817,12 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "termtree"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95059e91184749cb66be6dc994f67f182b6d897cb3df74a5bf66b5e709295fd8"
[[package]]
name = "tinyvec"
version = "1.6.0"

View File

@ -33,6 +33,8 @@ clap_mangen = "0.2.6"
url = "2.3.1"
[dev-dependencies]
assert_cmd = "2.0.7"
nu-glob = "0.73.0"
trycmd = "0.14.6"
[profile.release]

View File

@ -1,8 +1,45 @@
use assert_cmd::Command;
use nu_glob::glob;
use trycmd::TestCases;
use std::fs;
#[test]
fn integration() {
TestCases::new()
.default_bin_name("nurl")
.case("tests/cmd/**/*.toml");
}
#[test]
fn verify_outputs() {
for path in glob("tests/cmd/**/*.stdout").unwrap() {
let path = path.unwrap();
let name = path.file_name().unwrap();
if name == "json.stdout" {
eprintln!("skipping {}", path.display());
continue;
}
eprintln!("testing {}", path.display());
let mut expr = String::from_utf8(fs::read(&path).unwrap()).unwrap();
expr.insert_str(0, "(import <nixpkgs> { }).");
if name == "overwrite.stdout" {
expr.insert_str(0, r#"let pname = "nurl"; in "#);
} else if name == "overwrite_str.stdout" {
expr.insert_str(0, r#"let version = "0.3.0"; in "#);
}
Command::new("nix")
.arg("build")
.arg("--experimental-features")
.arg("nix-command")
.arg("--impure")
.arg("--expr")
.arg(expr)
.unwrap();
}
}