@@ -15,6 +15,7 @@ use crate::{
15
15
// TestType, TrFailedMsg, TrIgnored, TrOk,
16
16
} ,
17
17
} ;
18
+ use std:: any:: TypeId ;
18
19
use std:: sync:: mpsc:: channel;
19
20
use std:: time:: Duration ;
20
21
@@ -161,7 +162,9 @@ fn test_should_panic_bad_message() {
161
162
panic ! ( "an error message" ) ;
162
163
}
163
164
let expected = "foobar" ;
164
- let failed_msg = "panic did not include expected string" ;
165
+ let failed_msg = r#"panic did not contain expected string
166
+ panic message: `"an error message"`,
167
+ expected substring: `"foobar"`"# ;
165
168
let desc = TestDescAndFn {
166
169
desc : TestDesc {
167
170
name : StaticTestName ( "whatever" ) ,
@@ -175,7 +178,35 @@ fn test_should_panic_bad_message() {
175
178
let ( tx, rx) = channel ( ) ;
176
179
run_test ( & TestOpts :: new ( ) , false , desc, RunStrategy :: InProcess , tx, Concurrent :: No ) ;
177
180
let result = rx. recv ( ) . unwrap ( ) . result ;
178
- assert ! ( result == TrFailedMsg ( format!( "{} '{}'" , failed_msg, expected) ) ) ;
181
+ assert_eq ! ( result, TrFailedMsg ( failed_msg. to_string( ) ) ) ;
182
+ }
183
+
184
+ // FIXME: Re-enable emscripten once it can catch panics again (introduced by #65251)
185
+ #[ test]
186
+ #[ cfg( not( target_os = "emscripten" ) ) ]
187
+ fn test_should_panic_non_string_message_type ( ) {
188
+ use crate :: tests:: TrFailedMsg ;
189
+ fn f ( ) {
190
+ panic ! ( 1i32 ) ;
191
+ }
192
+ let expected = "foobar" ;
193
+ let failed_msg = format ! ( r#"expected panic with string value,
194
+ found non-string value: `{:?}`
195
+ expected substring: `"foobar"`"# , TypeId :: of:: <i32 >( ) ) ;
196
+ let desc = TestDescAndFn {
197
+ desc : TestDesc {
198
+ name : StaticTestName ( "whatever" ) ,
199
+ ignore : false ,
200
+ should_panic : ShouldPanic :: YesWithMessage ( expected) ,
201
+ allow_fail : false ,
202
+ test_type : TestType :: Unknown ,
203
+ } ,
204
+ testfn : DynTestFn ( Box :: new ( f) ) ,
205
+ } ;
206
+ let ( tx, rx) = channel ( ) ;
207
+ run_test ( & TestOpts :: new ( ) , false , desc, RunStrategy :: InProcess , tx, Concurrent :: No ) ;
208
+ let result = rx. recv ( ) . unwrap ( ) . result ;
209
+ assert_eq ! ( result, TrFailedMsg ( failed_msg) ) ;
179
210
}
180
211
181
212
// FIXME: Re-enable emscripten once it can catch panics again (introduced by #65251)
0 commit comments