Skip to content

Macros for testing conditions in Rust without panicking

License

Notifications You must be signed in to change notification settings

arcanyx-pub/expecting-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Expecting

Crates.io Documentation Crates.io

Expecting provides macros for testing conditions without panicking. The expect_* family of macros cause an early return of anyhow::Error if the expected condition is not met.

Macro Description
expect!(condition) Expects condition to be true
expect_eq!(a, b) Expects a == b
expect_ne!(a, b) Expects a != b
expect_some(option) Expects option to be Some(x) and returns x
expect_some_eq(some_a, a) Expects some_a == Some(a)
expect_none(option) Expects option to be None
expect_ok(result) Expects result to be Ok(x) and returns x
expect_err(result) Expects result to be Err(e) and returns e
expect_contains(string, substr) Expects string to contain substr
expect_contains(container, element) Expects container (e.g., Vec) to contain element
expect_empty(container) Expects container to have no elements.
expect_empty(string) Expects string to have a length of zero.
expect_not_empty(container) Expects container to have 1+ elements.
expect_not_empty(string) Expects string to have non-zero length.

This crate is especially helpful in async integration tests that involve provisioning and tearing down resources; rather than struggle to catch panics, you can simply use expect_* instead of assert_* to return Result.

Examples

use expecting::expect_eq;

#[test]
fn passing_test() -> Result<()> {
    expect_eq!(1, 1);
    Ok(())
}

#[test]
fn failing_test() -> Result<()> {
    expect_eq!(1, 2);  // returns early
    Ok(())  // won't be reached
}

The error message for a failed test includes the line number and detailed description of what went wrong.

expect_eq error

expect_contains error

See the docs for usage examples and more info.

About

Macros for testing conditions in Rust without panicking

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages