Skip to main content

assert_snap

Macro assert_snap 

Source
macro_rules! assert_snap {
    ($actual:expr, $expected:expr) => { ... };
    ($actual:expr, $expected:expr,$($tail:tt)+) => { ... };
    (
        @assert_str,
        // &str
        $actual:expr,
        // &str
        $expected:expr,
        // Rules token stream
        $($rules:tt)+
    ) => { ... };
    (
        @assert_str,
        // &str
        $actual:expr,
        // &str
        $expected:expr
    ) => { ... };
    (@munch $vec:ident;) => { ... };
    (@munch $vec:ident; [$limit:expr] $pattern:expr => $replacement:expr , $($rest:tt)*) => { ... };
    (@munch $vec:ident; [$limit:expr] $pattern:expr => $replacement:expr) => { ... };
    (@munch $vec:ident; $pattern:expr => $replacement:expr , $($rest:tt)*) => { ... };
    (@munch $vec:ident; $pattern:expr => $replacement:expr) => { ... };
}
Expand description

Asserts any types implementing Display.

§Syntax

assert_snap!(actual, expected);
assert_snap!(actual, expected, "pattern" => "replacement");
assert_snap!(actual, expected, [limit] "pattern" => "replacement");
assert_snap!(actual, expected, rule1, rule2, ...);

§Parameters

  • $actual: An expression implementing Display or convertible via format!("{actual}").
  • $expected: An expression implementing Display or convertible via format!("{expected}").
  • [limit] pattern => replacement: Optional redaction rules to scrub dynamic data (e.g. timestamps, UUIDs) before comparison.
    • limit (optional): [n] limits replacement to the first n matches. If omitted or [0], all matches are replaced.
    • pattern: A regex pattern string.
    • replacement: Replacement string or regex group reference (e.g. "$1").

§Examples

Basic comparison:

use assert_snap::assert_snap;

assert_snap!("hello world", "hello world");

Comparison with redaction rules:

use assert_snap::assert_snap;

assert_snap!(
    "User id is 12345",
    "User id is [ID]",
    r"\d+" => "[ID]"
);

Comparison with redaction rules with match limits:

use assert_snap::assert_snap;

assert_snap!(
    "secret and secret",
    "**** and secret",
    [1] "secret" => "****"
);