#token-stream #rustfmt #show #diff #pretty #assert-eq #passes

assert_tokens_eq

Like Rust’s built-in assert_eq macro, but for token streams. Passes them through rustfmt, and shows a pretty diff.

1 unstable release

0.1.0 Jul 30, 2019

#8 in #assert-eq

44 downloads per month
Used in valibuk_core

MIT/Apache

53KB
280 lines

assert_tokens_eq

Like Rust's built-in assert_eq macro, but for token streams. Passes them through rustfmt, and shows a pretty diff (powered by pretty_assertions).

How it works

You write:

let got = something_that_generates_rust_code();
let expected = quote! {
    #[no_mangle]
    extern "C" fn foo(
        input: *const ::libc::c_char,
        input_len: ::libc::size_t,
        input3: *const ::libc::c_int,
        input3_len: ::libc::size_t,
    ) {
        fn foo(input: Arc<str>, input2: Arc<str>) {}
        unimplemented!()
    }
};
assert_tokens_eq!(got, expected);

and you get:

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.

Dependencies

~2.5MB
~51K SLoC