pretty_assertions 1.1.0

Overwrite `assert_eq!` and `assert_ne!` with drop-in replacements, adding colorful diffs.
Documentation

Build status Latest version All downloads Downloads of latest version

Pretty Assertions

When writing tests in Rust, you'll probably use assert_eq!(a, b) a lot.

If such a test fails, it will present all the details of a and b. But you have to spot the differences yourself, which is not always straightforward, like here:

standard assertion

Wouldn't that task be much easier with a colorful diff?

pretty assertion

Yep — and you only need one line of code to make it happen:

use pretty_assertions::{assert_eq, assert_ne};
// 1. add the `pretty_assertions` dependency to `Cargo.toml`.
// 2. insert this line at the top of each module, as needed
use pretty_assertions::{assert_eq, assert_ne};

fn main() {
    #[derive(Debug, PartialEq)]
    struct Foo {
        lorem: &'static str,
        ipsum: u32,
        dolor: Result<String, String>,
    }

    let x = Some(Foo { lorem: "Hello World!", ipsum: 42, dolor: Ok("hey".to_string())});
    let y = Some(Foo { lorem: "Hello Wrold!", ipsum: 42, dolor: Ok("hey ho!".to_string())});

    assert_eq!(x, y);
}

Tip

Specify it as [dev-dependencies] and it will only be used for compiling tests, examples, and benchmarks. This way the compile time of cargo build won't be affected!

Also add #[cfg(test)] to your use statements, like this:

#[cfg(test)]
use pretty_assertions::{assert_eq, assert_ne};

Note

  • Since Rust 2018 edition, you need to declare use pretty_assertions::{assert_eq, assert_ne}; per module. Before you would write #[macro_use] extern crate pretty_assertions;.
  • The replacement is only effective in your own crate, not in other libraries you include.
  • assert_ne is also switched to multi-line presentation, but does not show a diff.
  • Under Windows, the terminal state is modified to properly handle VT100 escape sequences, which may break display for certain use cases.
  • The minimum supported rust version (MSRV) is 1.35.0

no_std support

For no_std support, disable the std feature and enable the alloc feature:

# Cargo.toml
pretty_assertions = { version= "...", default-features = false, features = ["alloc"] }

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.