#testing #process #execution #facilities #command #regex #bintest

testcall

companinon crate to bintest, implements test facilities

14 releases (4 stable)

1.3.0 Mar 29, 2022
1.2.0 Sep 22, 2021
1.1.0 Aug 14, 2021
0.6.0 Jul 28, 2021

#812 in Text processing

Download history 12/week @ 2024-02-25 1/week @ 2024-03-03 8/week @ 2024-03-10 174/week @ 2024-03-31

182 downloads per month
Used in 2 crates (via testpath)

MIT/Apache

20KB
367 lines

Companinon crate to ‘BinTest’, implements test facilities

Description

A TestCall uses BinTest and std::process::Command to wrap process execution in a way that is ergonomic to use for (repeated) testing. Few more test facilities are provided and will grow in future.

Example

#[test]
fn myprogram_test() {
    let executables = BinTest::new();
    let mut myprogram = TestCall::new(&executables, "myprogram");

    myprogram
        .call(["--help"])
        .assert_success();
}

Future Plans

New features will be added as needed, PR’s are welcome. This is work in progress.


lib.rs:

Companinon crate to 'BinTest', implements test facilities

Description

A TestCall uses BinTest and std::process::Command to wrap process execution in a way that is ergonomic to use for (repeated) testing. Few more test facilities are provided and will grow in future.

Initial Example

#[test]
fn myprogram_test() {
    let executables = BinTest::new();
    let mut myprogram = TestCall::new(&executables, "myprogram");

    myprogram
        .call(["--version"])
        .assert_success()
        .assert_stdout_utf8("myprogram 0.1.*");
}

Panics vs. Results

'testcall' is made explicitly for writing tests. To ease this it prefers aborting by panic over error handling. When anything goes wrong the test is aborted and the cause is reported.

Concepts and Facilities

augmenting standard/existing things assert capture regex

Regular Expressions and Captures

TestCall

Allows setting up and calling programs build by your project through the 'bintest' crate or any other executable. Augments 'std::process::Command'. The result of running tests is collected and returned in a 'std::process::Output'.

TestOutput

A Trait that augments 'std::process::Output' with assertions and regex capturing functions to validate the result of a test run. Note that 'std::process::Output' stores the results of a call in memory. Thus testing should not generate excessive outputs (on stdout/stderr).

Future Plans

New features will be added as needed, PR's are welcome. This is work in progress.

Dependencies

~5–16MB
~207K SLoC