assertor

Crates.ioassertor
lib.rsassertor
version0.0.3
sourcesrc
created_at2021-09-18 11:20:04.709571
updated_at2024-09-24 18:21:28.217624
descriptionFluent assertion library with readable failure messages.
homepage
repositoryhttps://github.com/google/assertor
max_upload_size
id453268
size206,357
cocuh (cocuh)

documentation

README

Assertor

Assertor makes test assertions and failure messages more human-readable.

crates.io license docs.rs OpenSSF
Scorecard

Assertor is heavily affected by Java Truth in terms of API design and error messages, but this is a totally different project from Java Truth.

Disclaimer

This is not an official Google product, it is just code that happens to be owned by Google.

⚠ The API is not fully stable and may be changed until version 1.0.

Example

use assertor::*;

#[test]
fn test_it() {
    assert_that!("foobarbaz").contains("bar");
    assert_that!("foobarbaz").ends_with("baz");

    assert_that!(0.5).with_abs_tol(0.2).is_approx_equal_to(0.6);

    assert_that!(vec!["a", "b"]).contains("a");
    assert_that!(vec!["a", "b"]).has_length(2);
    assert_that!(vec!["a", "b"]).contains_exactly(vec!["a", "b"]);

    assert_that!(Option::Some("Foo")).has_value("Foo");
}

Failure cases

use assertor::*;

fn test_it() {
    assert_that!(vec!["a", "b", "c"]).contains_exactly(vec!["b", "c", "d"]);
    // missing (1)   : ["d"]
    // unexpected (1): ["a"]
    // ---
    // expected      : ["b", "c", "d"]
    // actual        : ["a", "b", "c"]
}

anyhow

Supports asserting error value of anyhow under anyhow feature flag.

[dependencies]
assertor = { version = "*", features = ["anyhow"] }
use assertor::*;
use anyhow::anyhow;

fn anyhow_func() -> anyhow::Result<()> {
    Err(anyhow!("failed to parse something in foobar"))
}

fn test_it() {
    assert_that!(anyhow_func()).err().has_message("failed to parse something in foobar");
    assert_that!(anyhow_func()).err().as_string().contains("parse something");
    assert_that!(anyhow_func()).err().as_string().starts_with("failed");
    assert_that!(anyhow_func()).err().as_string().ends_with("foobar");
}

Feature ideas

  • Color / Bold

  • Better diff: vec

  • Better diff: set

  • Better diff: HashMap

Commit count: 109

cargo fmt