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 |
#7 in #facilities
36 downloads per month
Used in 2 crates
(via testpath)
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
~208K SLoC