Merge pull request #372 from epage/test

test: Port to trycmd
This commit is contained in:
Ed Page 2021-11-08 12:08:43 -06:00 committed by GitHub
commit 39649a8ebe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 129 additions and 96 deletions

View file

@ -69,7 +69,7 @@ jobs:
- name: No-default features
run: cargo test --workspace --no-default-features
msrv:
name: "Check MSRV: 1.53.0"
name: "Check MSRV: 1.54.0"
needs: smoke
runs-on: ubuntu-latest
steps:
@ -78,7 +78,7 @@ jobs:
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.53.0 # MSRV
toolchain: 1.54.0 # MSRV
profile: minimal
override: true
- uses: Swatinem/rust-cache@v1
@ -133,7 +133,7 @@ jobs:
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.53.0 # MSRV
toolchain: 1.54.0 # MSRV
profile: minimal
override: true
components: clippy

View file

@ -26,7 +26,7 @@ jobs:
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.53.0 # MSRV
toolchain: 1.54.0 # MSRV
profile: minimal
override: true
components: rustfmt

View file

@ -57,9 +57,9 @@ jobs:
strategy:
matrix:
rust:
- 1.53.0 # MSRV
- 1.54.0 # MSRV
- stable
continue-on-error: ${{ matrix.rust != '1.53.0' }} # MSRV
continue-on-error: ${{ matrix.rust != '1.54.0' }} # MSRV
runs-on: ubuntu-latest
steps:
- name: Checkout repository

118
Cargo.lock generated
View file

@ -58,20 +58,6 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
[[package]]
name = "assert_cmd"
version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e996dc7940838b7ef1096b882e29ec30a3149a3a443cdc8dba19ed382eca1fe2"
dependencies = [
"bstr",
"doc-comment",
"predicates",
"predicates-core",
"predicates-tree",
"wait-timeout",
]
[[package]]
name = "assert_fs"
version = "1.0.6"
@ -154,6 +140,12 @@ version = "3.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9df67f7bf9ef8498769f994239c45613ef0c5899415fb58e9add412d2c1a538"
[[package]]
name = "bytes"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
[[package]]
name = "cast"
version = "0.2.7"
@ -231,6 +223,16 @@ dependencies = [
"unicase",
]
[[package]]
name = "combine"
version = "4.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2b2f5d0ee456f3928812dfc8c6d9a1d592b98678f6d56db9b0cd2b7bc6c8db5"
dependencies = [
"bytes",
"memchr",
]
[[package]]
name = "concolor-clap"
version = "0.0.6"
@ -572,15 +574,6 @@ dependencies = [
"termcolor",
]
[[package]]
name = "float-cmp"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
dependencies = [
"num-traits",
]
[[package]]
name = "fnv"
version = "1.0.7"
@ -610,6 +603,12 @@ version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7"
[[package]]
name = "glob"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
[[package]]
name = "globset"
version = "0.4.8"
@ -640,6 +639,12 @@ version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62aca2aba2d62b4a7f5b33f3712cb1b0692779a56fb510499d5c0aa594daeaf3"
[[package]]
name = "hashbrown"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
[[package]]
name = "heck"
version = "0.3.3"
@ -679,6 +684,16 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]]
name = "humantime-serde"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac34a56cfd4acddb469cc7fff187ed5ac36f498ba085caf8bbc725e3ff474058"
dependencies = [
"humantime",
"serde",
]
[[package]]
name = "ident_case"
version = "1.0.1"
@ -703,6 +718,16 @@ dependencies = [
"winapi-util",
]
[[package]]
name = "indexmap"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
dependencies = [
"autocfg",
"hashbrown",
]
[[package]]
name = "itertools"
version = "0.10.1"
@ -996,11 +1021,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c6ce811d0b2e103743eec01db1c50612221f173084ce2f7941053e94b6bb474"
dependencies = [
"difflib",
"float-cmp",
"itertools",
"normalize-line-endings",
"predicates-core",
"regex",
]
[[package]]
@ -1289,6 +1311,12 @@ dependencies = [
"serde",
]
[[package]]
name = "shlex"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
[[package]]
name = "simdutf8"
version = "0.1.3"
@ -1440,12 +1468,47 @@ dependencies = [
"serde",
]
[[package]]
name = "toml_edit"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c29c21e11af3c58476a1063cb550e255c45c60928bf7f272462a533e7a2b406"
dependencies = [
"combine",
"indexmap",
"itertools",
"kstring",
"serde",
]
[[package]]
name = "treeline"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41"
[[package]]
name = "trycmd"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3756168da9e15c2ba53478a9e14661162bd724cc45dc650d1009d80ad46f0cad"
dependencies = [
"concolor-control",
"difflib",
"glob",
"humantime",
"humantime-serde",
"normalize-line-endings",
"rayon",
"serde",
"shlex",
"tempfile",
"toml_edit",
"wait-timeout",
"walkdir",
"yansi",
]
[[package]]
name = "typed-arena"
version = "2.0.1"
@ -1475,7 +1538,6 @@ version = "1.2.1"
dependencies = [
"ahash",
"anyhow",
"assert_cmd",
"assert_fs",
"atty",
"bstr",
@ -1497,12 +1559,12 @@ dependencies = [
"log",
"maplit",
"once_cell",
"predicates",
"proc-exit",
"serde",
"serde_json",
"structopt",
"toml",
"trycmd",
"typed-arena",
"typos",
"typos-dict",

View file

@ -94,8 +94,7 @@ maplit = "1.0"
[dev-dependencies]
assert_fs = "1.0"
assert_cmd = "2.0"
predicates = "2.0"
trycmd = "0.2.2"
criterion = "0.3"
[profile.dev]

View file

@ -90,7 +90,7 @@ fn generate_variations<W: std::io::Write>(file: &mut W) {
None
} else {
referenced_symbols.extend(data.iter().map(|(s, _)| s));
let value = generate_link(&data);
let value = generate_link(data);
Some((*word, value))
}
}),
@ -165,7 +165,7 @@ fn entries() -> BTreeMap<String, varcon_core::Entry> {
.filter(|e| {
e.variants
.iter()
.all(|v| typos::tokens::Word::new(&v.word, 0).is_ok())
.all(|v| typos::tokens::Word::new(v.word, 0).is_ok())
})
.map(|e| {
let mut e = e.into_owned();

View file

@ -720,6 +720,7 @@ impl<'s> Iterator for SplitIdent<'s> {
type Item = Word<'s>;
fn next(&mut self) -> Option<Word<'s>> {
#[allow(clippy::while_let_on_iterator)]
while let Some((i, c)) = self.char_indices.next() {
let cur_mode = WordMode::classify(c);
if cur_mode == WordMode::Boundary {

View file

@ -39,8 +39,7 @@ A Cv: acknowledgment's / Av B C: acknowledgement's
",
);
let all: Vec<_> = iter.collect();
assert_eq!(all.len(), 1);
assert_eq!(iter.count(), 1);
}
#[test]
@ -58,8 +57,7 @@ A Cv: acknowledgment's / Av B C: acknowledgement's
",
);
let all: Vec<_> = iter.collect();
assert_eq!(all.len(), 2);
assert_eq!(iter.count(), 2);
}
}

View file

@ -620,15 +620,14 @@ mod test {
fn fix_simple(line: &str, corrections: Vec<(usize, &'static str, &'static str)>) -> String {
let line = line.as_bytes().to_vec();
let corrections: Vec<_> = corrections
let corrections = corrections
.into_iter()
.map(|(byte_offset, typo, correction)| typos::Typo {
byte_offset,
typo: typo.into(),
corrections: typos::Status::Corrections(vec![correction.into()]),
})
.collect();
let actual = fix_buffer(line, corrections.into_iter());
});
let actual = fix_buffer(line, corrections);
String::from_utf8(actual).unwrap()
}

View file

@ -1,50 +0,0 @@
use assert_cmd::Command;
#[test]
#[cfg(feature = "dict")]
fn test_stdin_success() {
let mut cmd = Command::cargo_bin("typos").unwrap();
cmd.arg("-").write_stdin("Hello world");
cmd.assert().success();
}
#[test]
#[cfg(feature = "dict")]
fn test_stdin_failure() {
let mut cmd = Command::cargo_bin("typos").unwrap();
cmd.arg("-").write_stdin("Apropriate world");
cmd.assert().code(2);
}
#[test]
#[cfg(feature = "dict")]
fn test_stdin_correct() {
let mut cmd = Command::cargo_bin("typos").unwrap();
cmd.arg("-")
.arg("--write-changes")
.write_stdin("Apropriate world");
cmd.assert().success().stdout("Appropriate world");
}
#[test]
#[cfg(feature = "dict")]
fn test_file_failure() {
let mut cmd = Command::cargo_bin("typos").unwrap();
cmd.arg("README.md");
cmd.assert().code(2);
}
#[test]
#[cfg(feature = "dict")]
fn test_relative_dir_failure() {
let mut cmd = Command::cargo_bin("typos").unwrap();
cmd.arg(".");
cmd.assert().code(2);
}
#[test]
#[cfg(feature = "dict")]
fn test_assumed_dir_failure() {
let mut cmd = Command::cargo_bin("typos").unwrap();
cmd.assert().code(2);
}

5
tests/cli_tests.rs Normal file
View file

@ -0,0 +1,5 @@
#[test]
#[cfg(feature = "dict")]
fn cli_tests() {
trycmd::TestCases::new().case("tests/cmd/*.toml");
}

View file

@ -0,0 +1,2 @@
bin.name = "typos"
status.code = 2

View file

@ -0,0 +1,3 @@
bin.name = "typos"
args = "README.md"
status.code = 2

View file

@ -0,0 +1,3 @@
bin.name = "typos"
args = "."
status.code = 2

View file

@ -0,0 +1 @@
Apropriate world

View file

@ -0,0 +1 @@
Appropriate world

View file

@ -0,0 +1,2 @@
bin.name = "typos"
args = "--write-changes -"

View file

@ -0,0 +1 @@
Apropriate world

View file

@ -0,0 +1,3 @@
bin.name = "typos"
args = "-"
status.code = 2

View file

@ -0,0 +1 @@
Hello world

View file

@ -0,0 +1,2 @@
bin.name = "typos"
args = "-"