#cli #duct #assert #assert-command

dev bin+lib trycmd

Snapshot testing for a herd of CLI tests

74 releases (6 stable)

Uses new Rust 2024

1.2.0 Mar 23, 2026
1.0.0 Feb 11, 2026
0.15.11 Nov 17, 2025
0.15.10 Jul 10, 2025
0.8.2 Nov 30, 2021

#629 in Testing

Download history 39951/week @ 2026-01-23 45434/week @ 2026-01-30 50436/week @ 2026-02-06 48936/week @ 2026-02-13 48939/week @ 2026-02-20 52528/week @ 2026-02-27 54224/week @ 2026-03-06 59331/week @ 2026-03-13 52534/week @ 2026-03-20 68763/week @ 2026-03-27 67371/week @ 2026-04-03 84800/week @ 2026-04-10 95050/week @ 2026-04-17 118455/week @ 2026-04-24 96024/week @ 2026-05-01 95973/week @ 2026-05-08

418,181 downloads per month
Used in 167 crates (151 directly)

MIT/Apache

380KB
10K SLoC

trycmd

Treat your tests like cattle, instead of pets

Documentation License Crates Status

trycmd is a test harness that will enumerate test case files and run them to verify the results, taking inspiration from trybuild and cram.

Example

To create a minimal setup, create a tests/cli_tests.rs with

#[test]
fn cli_tests() {
    trycmd::TestCases::new()
        .case("tests/cmd/*.toml")
        .case("README.md");
}

and write out your test cases in .toml files along with examples in your README.md.

Run this with cargo test like normal. TestCases will enumerate all test case files and run the contained commands, verifying they run as expected.

See the docs for more.

Users

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.

Dependencies

~2.4–9.5MB
~198K SLoC