@@ -45,13 +45,15 @@ impl<T> Trait for T {}
45
45
fn assert_err < T : Debug > ( result : impl FnOnce ( ) -> Result < T > , expected : & ' static str ) {
46
46
let actual = result ( ) . unwrap_err ( ) . to_string ( ) ;
47
47
48
- let mut accepted_alternatives = expected. split ( '\n' ) ;
49
- let expected = accepted_alternatives. next_back ( ) . unwrap ( ) ;
50
- if accepted_alternatives. any ( |alternative| actual == alternative) {
51
- return ;
48
+ // In general different rustc versions will format the interpolated lhs and
49
+ // rhs $:expr fragment with insignificant differences in whitespace or
50
+ // punctuation, so we check the message in full against nightly and do just
51
+ // a cursory test on older toolchains.
52
+ if rustversion:: cfg!( nightly) && !cfg ! ( miri) {
53
+ assert_eq ! ( actual, expected) ;
54
+ } else {
55
+ assert_eq ! ( actual. contains( " vs " ) , expected. contains( " vs " ) ) ;
52
56
}
53
-
54
- assert_eq ! ( actual, expected) ;
55
57
}
56
58
57
59
#[ test]
@@ -98,7 +100,7 @@ fn test_low_precedence_binary_operator() {
98
100
let test = || Ok ( ensure ! ( while false == true && false { } < ( ) ) ) ;
99
101
assert_err (
100
102
test,
101
- "Condition failed: `while false == true && false { } < ()` (() vs ())" ,
103
+ "Condition failed: `while false == true && false {} < ()` (() vs ())" ,
102
104
) ;
103
105
}
104
106
@@ -145,41 +147,41 @@ fn test_unary() {
145
147
fn test_if ( ) {
146
148
#[ rustfmt:: skip]
147
149
let test = || Ok ( ensure ! ( if false { } . t( 1 ) == 2 ) ) ;
148
- assert_err ( test, "Condition failed: `if false { }.t(1) == 2` (1 vs 2)" ) ;
150
+ assert_err ( test, "Condition failed: `if false {}.t(1) == 2` (1 vs 2)" ) ;
149
151
150
152
#[ rustfmt:: skip]
151
153
let test = || Ok ( ensure ! ( if false { } else { } . t( 1 ) == 2 ) ) ;
152
154
assert_err (
153
155
test,
154
- "Condition failed: `if false { } else { }.t(1) == 2` (1 vs 2)" ,
156
+ "Condition failed: `if false {} else {}.t(1) == 2` (1 vs 2)" ,
155
157
) ;
156
158
157
159
#[ rustfmt:: skip]
158
160
let test = || Ok ( ensure ! ( if false { } else if false { } . t( 1 ) == 2 ) ) ;
159
161
assert_err (
160
162
test,
161
- "Condition failed: `if false { } else if false { }.t(1) == 2` (1 vs 2)" ,
163
+ "Condition failed: `if false {} else if false {}.t(1) == 2` (1 vs 2)" ,
162
164
) ;
163
165
164
166
#[ rustfmt:: skip]
165
167
let test = || Ok ( ensure ! ( if let 1 = 2 { } . t( 1 ) == 2 ) ) ;
166
168
assert_err (
167
169
test,
168
- "Condition failed: `if let 1 = 2 { }.t(1) == 2` (1 vs 2)" ,
170
+ "Condition failed: `if let 1 = 2 {}.t(1) == 2` (1 vs 2)" ,
169
171
) ;
170
172
171
173
#[ rustfmt:: skip]
172
174
let test = || Ok ( ensure ! ( if let 1 | 2 = 2 { } . t( 1 ) == 2 ) ) ;
173
175
assert_err (
174
176
test,
175
- "Condition failed: `if let 1 | 2 = 2 { }.t(1) == 2` (1 vs 2)" ,
177
+ "Condition failed: `if let 1 | 2 = 2 {}.t(1) == 2` (1 vs 2)" ,
176
178
) ;
177
179
178
180
#[ rustfmt:: skip]
179
181
let test = || Ok ( ensure ! ( if let | 1 | 2 = 2 { } . t( 1 ) == 2 ) ) ;
180
182
assert_err (
181
183
test,
182
- "Condition failed: `if let 1 | 2 = 2 { }.t(1) == 2` (1 vs 2)" ,
184
+ "Condition failed: `if let 1 | 2 = 2 {}.t(1) == 2` (1 vs 2)" ,
183
185
) ;
184
186
}
185
187
@@ -189,53 +191,49 @@ fn test_loop() {
189
191
let test = || Ok ( ensure ! ( 1 + loop { break 1 } == 1 ) ) ;
190
192
assert_err (
191
193
test,
192
- // 1.54 puts a double space after loop
193
- "Condition failed: `1 + loop { break 1 } == 1` (2 vs 1)\n \
194
- Condition failed: `1 + loop { break 1 } == 1` (2 vs 1)",
194
+ "Condition failed: `1 + loop { break 1 } == 1` (2 vs 1)" ,
195
195
) ;
196
196
197
197
#[ rustfmt:: skip]
198
198
let test = || Ok ( ensure ! ( 1 + ' a: loop { break ' a 1 } == 1 ) ) ;
199
199
assert_err (
200
200
test,
201
- // 1.54 puts a double space after loop
202
- "Condition failed: `1 + 'a: loop { break 'a 1 } == 1` (2 vs 1)\n \
203
- Condition failed: `1 + 'a: loop { break 'a 1 } == 1` (2 vs 1)",
201
+ "Condition failed: `1 + 'a: loop { break 'a 1 } == 1` (2 vs 1)" ,
204
202
) ;
205
203
206
204
#[ rustfmt:: skip]
207
205
let test = || Ok ( ensure ! ( while false { } . t( 1 ) == 2 ) ) ;
208
206
assert_err (
209
207
test,
210
- "Condition failed: `while false { }.t(1) == 2` (1 vs 2)" ,
208
+ "Condition failed: `while false {}.t(1) == 2` (1 vs 2)" ,
211
209
) ;
212
210
213
211
#[ rustfmt:: skip]
214
212
let test = || Ok ( ensure ! ( while let None = Some ( 1 ) { } . t( 1 ) == 2 ) ) ;
215
213
assert_err (
216
214
test,
217
- "Condition failed: `while let None = Some(1) { }.t(1) == 2` (1 vs 2)" ,
215
+ "Condition failed: `while let None = Some(1) {}.t(1) == 2` (1 vs 2)" ,
218
216
) ;
219
217
220
218
#[ rustfmt:: skip]
221
219
let test = || Ok ( ensure ! ( for _x in iter:: once( 0 ) { } . t( 1 ) == 2 ) ) ;
222
220
assert_err (
223
221
test,
224
- "Condition failed: `for _x in iter::once(0) { }.t(1) == 2` (1 vs 2)" ,
222
+ "Condition failed: `for _x in iter::once(0) {}.t(1) == 2` (1 vs 2)" ,
225
223
) ;
226
224
227
225
#[ rustfmt:: skip]
228
226
let test = || Ok ( ensure ! ( for | _x in iter:: once( 0 ) { } . t( 1 ) == 2 ) ) ;
229
227
assert_err (
230
228
test,
231
- "Condition failed: `for _x in iter::once(0) { }.t(1) == 2` (1 vs 2)" ,
229
+ "Condition failed: `for _x in iter::once(0) {}.t(1) == 2` (1 vs 2)" ,
232
230
) ;
233
231
234
232
#[ rustfmt:: skip]
235
233
let test = || Ok ( ensure ! ( for true | false in iter:: empty( ) { } . t( 1 ) == 2 ) ) ;
236
234
assert_err (
237
235
test,
238
- "Condition failed: `for true | false in iter::empty() { }.t(1) == 2` (1 vs 2)" ,
236
+ "Condition failed: `for true | false in iter::empty() {}.t(1) == 2` (1 vs 2)" ,
239
237
) ;
240
238
}
241
239
@@ -381,7 +379,7 @@ fn test_macro() {
381
379
let test = || Ok ( ensure ! ( stringify! { } != "" ) ) ;
382
380
assert_err (
383
381
test,
384
- "Condition failed: `stringify! { } != \" \" ` (\" \" vs \" \" )" ,
382
+ "Condition failed: `stringify! {} != \" \" ` (\" \" vs \" \" )" ,
385
383
) ;
386
384
}
387
385
@@ -663,7 +661,7 @@ fn test_pat() {
663
661
let test = || Ok ( ensure ! ( if let :: std:: marker:: PhantomData = p { } != ( ) ) ) ;
664
662
assert_err (
665
663
test,
666
- "Condition failed: `if let ::std::marker::PhantomData = p { } != ()` (() vs ())" ,
664
+ "Condition failed: `if let ::std::marker::PhantomData = p {} != ()` (() vs ())" ,
667
665
) ;
668
666
669
667
let test = || Ok ( ensure ! ( if let <S as Trait >:: V = 0 { 0 } else { 1 } == 1 ) ) ;
@@ -675,7 +673,7 @@ fn test_pat() {
675
673
let test = || Ok ( ensure ! ( for _ in iter:: once( ( ) ) { } != ( ) ) ) ;
676
674
assert_err (
677
675
test,
678
- "Condition failed: `for _ in iter::once(()) { } != ()` (() vs ())" ,
676
+ "Condition failed: `for _ in iter::once(()) {} != ()` (() vs ())" ,
679
677
) ;
680
678
681
679
let test = || Ok ( ensure ! ( if let stringify!( x) = "x" { 0 } else { 1 } == 1 ) ) ;
0 commit comments