rs-assert-cmd
Ergonomic CLI binary integration testing with fluent assertions on stdout, stderr, and exit code
Installation
[]
= "0.1.3"
Usage
use cmd;
// Basic command assertion
cmd
.arg
.run
.unwrap
.assert_success
.assert_stdout_contains;
// Chain multiple assertions
cmd
.arg
.run
.unwrap
.assert_success
.assert_exit_code
.assert_stdout_contains
.assert_stderr_is_empty;
// Environment variables and stdin
cmd
.stdin
.run
.unwrap
.assert_success
.assert_stdout_equals;
// Glob pattern matching
cmd
.arg
.run
.unwrap
.assert_stdout_matches;
API
Builder
| Method | Description |
|---|---|
cmd(program) |
Create a new command builder |
Cmd::new(program) |
Create a new command builder |
.arg(arg) |
Append a single argument |
.args(&[args]) |
Append multiple arguments |
.env(key, value) |
Set an environment variable |
.stdin(data) |
Pipe data to stdin |
.current_dir(dir) |
Set the working directory |
.timeout(duration) |
Set a timeout for execution |
.run() |
Execute and return Result<CmdOutput, CmdError> |
Assertions
| Method | Description |
|---|---|
.assert_success() |
Exit code is 0 |
.assert_failure() |
Exit code is non-zero |
.assert_exit_code(code) |
Exit code matches exactly |
.assert_stdout_contains(s) |
Stdout contains substring |
.assert_stdout_equals(s) |
Stdout equals exactly |
.assert_stdout_is_empty() |
Stdout is empty |
.assert_stdout_line_count(n) |
Stdout has n lines |
.assert_stdout_matches(pat) |
Stdout matches glob pattern (*, ?) |
.assert_stderr_contains(s) |
Stderr contains substring |
.assert_stderr_equals(s) |
Stderr equals exactly |
.assert_stderr_is_empty() |
Stderr is empty |
.stdout_lines() |
Split stdout into Vec<&str> |
Development
Support
If you find this package useful, consider giving it a star on GitHub — it helps motivate continued maintenance and development.