diff --git a/Cargo.lock b/Cargo.lock index cdf99f1..40a4fed 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", diff --git a/Cargo.toml b/Cargo.toml index 3361efe..99002d0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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] diff --git a/tests/cli.rs b/tests/cli.rs deleted file mode 100644 index 2193332..0000000 --- a/tests/cli.rs +++ /dev/null @@ -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); -} diff --git a/tests/cli_tests.rs b/tests/cli_tests.rs new file mode 100644 index 0000000..b81c6d1 --- /dev/null +++ b/tests/cli_tests.rs @@ -0,0 +1,5 @@ +#[test] +#[cfg(feature = "dict")] +fn cli_tests() { + trycmd::TestCases::new().case("tests/cmd/*.toml"); +} diff --git a/tests/cmd/assumed-dir-failure.toml b/tests/cmd/assumed-dir-failure.toml new file mode 100644 index 0000000..a04fffd --- /dev/null +++ b/tests/cmd/assumed-dir-failure.toml @@ -0,0 +1,2 @@ +bin.name = "typos" +status.code = 2 diff --git a/tests/cmd/file-failure.toml b/tests/cmd/file-failure.toml new file mode 100644 index 0000000..134c44c --- /dev/null +++ b/tests/cmd/file-failure.toml @@ -0,0 +1,3 @@ +bin.name = "typos" +args = "README.md" +status.code = 2 diff --git a/tests/cmd/relative-dir-failure.toml b/tests/cmd/relative-dir-failure.toml new file mode 100644 index 0000000..d742035 --- /dev/null +++ b/tests/cmd/relative-dir-failure.toml @@ -0,0 +1,3 @@ +bin.name = "typos" +args = "." +status.code = 2 diff --git a/tests/cmd/stdin-correct.stdin b/tests/cmd/stdin-correct.stdin new file mode 100644 index 0000000..78a4360 --- /dev/null +++ b/tests/cmd/stdin-correct.stdin @@ -0,0 +1 @@ +Apropriate world diff --git a/tests/cmd/stdin-correct.stdout b/tests/cmd/stdin-correct.stdout new file mode 100644 index 0000000..8d183c3 --- /dev/null +++ b/tests/cmd/stdin-correct.stdout @@ -0,0 +1 @@ +Appropriate world diff --git a/tests/cmd/stdin-correct.toml b/tests/cmd/stdin-correct.toml new file mode 100644 index 0000000..fd62546 --- /dev/null +++ b/tests/cmd/stdin-correct.toml @@ -0,0 +1,2 @@ +bin.name = "typos" +args = "--write-changes -" diff --git a/tests/cmd/stdin-failure.stdin b/tests/cmd/stdin-failure.stdin new file mode 100644 index 0000000..78a4360 --- /dev/null +++ b/tests/cmd/stdin-failure.stdin @@ -0,0 +1 @@ +Apropriate world diff --git a/tests/cmd/stdin-failure.toml b/tests/cmd/stdin-failure.toml new file mode 100644 index 0000000..74181fa --- /dev/null +++ b/tests/cmd/stdin-failure.toml @@ -0,0 +1,3 @@ +bin.name = "typos" +args = "-" +status.code = 2 diff --git a/tests/cmd/stdin-success.stdin b/tests/cmd/stdin-success.stdin new file mode 100644 index 0000000..802992c --- /dev/null +++ b/tests/cmd/stdin-success.stdin @@ -0,0 +1 @@ +Hello world diff --git a/tests/cmd/stdin-success.toml b/tests/cmd/stdin-success.toml new file mode 100644 index 0000000..15dd0dd --- /dev/null +++ b/tests/cmd/stdin-success.toml @@ -0,0 +1,2 @@ +bin.name = "typos" +args = "-"