Crates.io | test-exec |
lib.rs | test-exec |
version | 0.1.0 |
source | src |
created_at | 2019-05-06 15:01:06.82801 |
updated_at | 2019-05-06 15:01:06.82801 |
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: []
};
}