From ce8128823545fc291d77591d89e5115299db7255 Mon Sep 17 00:00:00 2001 From: Markus Westerlind Date: Tue, 7 Nov 2017 14:16:37 +0100 Subject: [PATCH] Print the contents of the expected token when a serialize assert fails MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before ``` expected Token::Str but serialized as Str(“F9168C5E-CEB2-4FAA-B6BF-329BF39FA1E4") ``` After ``` expected Token::Str(“f9168c5e-ceb2-4faa-b6bf-329bf39fa1e4”) but serialized as Str(“F9168C5E-CEB2-4FAA-B6BF-329BF39FA1E4") ``` --- serde_test/src/ser.rs | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/serde_test/src/ser.rs b/serde_test/src/ser.rs index d443c883..b8769015 100644 --- a/serde_test/src/ser.rs +++ b/serde_test/src/ser.rs @@ -40,25 +40,43 @@ impl<'a> Serializer<'a> { macro_rules! assert_next_token { ($ser:expr, $expected:ident) => { - assert_next_token!($ser, $expected, Token::$expected, true); + assert_next_token!($ser, stringify!($expected), Token::$expected, true); }; ($ser:expr, $expected:ident($v:expr)) => { - assert_next_token!($ser, $expected, Token::$expected(v), v == $v); + assert_next_token!( + $ser, + format_args!("{}({:?})", stringify!($expected), $v), + Token::$expected(v), + v == $v + ); }; ($ser:expr, $expected:ident { $($k:ident),* }) => { let compare = ($($k,)*); - assert_next_token!($ser, $expected, Token::$expected { $($k),* }, ($($k,)*) == compare); + let field_format = || { + use std::fmt::Write; + let mut buffer = String::new(); + $( + write!(&mut buffer, "{}: {:?}, ", stringify!($k), $k).unwrap(); + )* + buffer + }; + assert_next_token!( + $ser, + format_args!("{} {{ {}}}", stringify!($expected), field_format()), + Token::$expected { $($k),* }, + ($($k,)*) == compare + ); }; - ($ser:expr, $expected:ident, $pat:pat, $guard:expr) => { + ($ser:expr, $expected:expr, $pat:pat, $guard:expr) => { match $ser.next_token() { Some($pat) if $guard => {} Some(other) => { panic!("expected Token::{} but serialized as {}", - stringify!($expected), other); + $expected, other); } None => { panic!("expected Token::{} after end of serialized tokens", - stringify!($expected)); + $expected); } } };