| Crates.io | test-exec |
| lib.rs | test-exec |
| version | 0.1.0 |
| created_at | 2019-05-06 15:01:06.82801+00 |
| updated_at | 2019-05-06 15:01:06.82801+00 |
| description | Test your command line applications comfortably |
| homepage | https://github.com/Draphar/test-exec/blob/master/README.md |
| repository | https://github.com/Draphar/test-exec/ |
| max_upload_size | |
| id | 132397 |
| size | 23,625 |
Cargo.toml
[dev-dependencies]
test-exec = "0.1.0
test-exec is a Rust testing library to help you at testing the output of a command line application.
It aims for maximum comfort, and wants to prevent messing around with Command.
The main functionality is the exec macro:
it executes your command, verifies the output and is highly customizable.
A few previews, assuming you have a binary target called my_bin:
minimum configuration:
exec!("my_bin");
(almost) maximum configuration:
let output = exec!{
"my_bin",
args: ["-p", "/"],
cwd: "/tmp",
env: {
THREADS: "4"
},
stdin: b"show-hidden",
timeout: 60000,
log: true,
code: 0,
stdout: b"Started program...\nDone.\n",
stderr: []
};
// `output` can be used here like a normal process::Output
If the program exits with any other code than 0, a different stdout or stderr,
or is running longer than 60 seconds, a panic occurs.
As you might have noticed, the bin target is added to the PATH automatically.
See the documentation for more.
stdin with one line eachstdout, stderr and optionally termination signal comparison directly through the macroAs test-exec is a testing library, it should be added to the dev-dependencies:
[dev-dependencies]
test-exec = "0.1.0
And it can be used in code by doing
#[macro_use]
extern crate test_exec;
For instance in an integration test for a binary called my_pwd, whichs prints the current working directory
tests/bin.rs
#[macro_use]
extern crate test_exec;
#[test]
fn test_program_output() {
exec!{
"my_pwd",
cwd: "/",
log: true,
code: 0,
stdout: b"/\n",
stderr: []
};
}