Skip to content

Commit f4956a1

Browse files
authored
Merge pull request #208 from dtolnay/ensuretest
Update ensure tests to nightly-2021-12-06 and run on nightly only
2 parents 871be23 + 58380ac commit f4956a1

File tree

2 files changed

+26
-28
lines changed

2 files changed

+26
-28
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ backtrace = { version = "0.3.51", optional = true }
2020

2121
[dev-dependencies]
2222
futures = { version = "0.3", default-features = false }
23-
rustversion = "1.0"
23+
rustversion = "1.0.6"
2424
syn = { version = "1.0", features = ["full"] }
2525
thiserror = "1.0"
2626
trybuild = { version = "1.0.49", features = ["diff"] }

tests/test_ensure.rs

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,15 @@ impl<T> Trait for T {}
4545
fn assert_err<T: Debug>(result: impl FnOnce() -> Result<T>, expected: &'static str) {
4646
let actual = result().unwrap_err().to_string();
4747

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 "));
5256
}
53-
54-
assert_eq!(actual, expected);
5557
}
5658

5759
#[test]
@@ -98,7 +100,7 @@ fn test_low_precedence_binary_operator() {
98100
let test = || Ok(ensure!(while false == true && false {} < ()));
99101
assert_err(
100102
test,
101-
"Condition failed: `while false == true && false { } < ()` (() vs ())",
103+
"Condition failed: `while false == true && false {} < ()` (() vs ())",
102104
);
103105
}
104106

@@ -145,41 +147,41 @@ fn test_unary() {
145147
fn test_if() {
146148
#[rustfmt::skip]
147149
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)");
149151

150152
#[rustfmt::skip]
151153
let test = || Ok(ensure!(if false {} else {}.t(1) == 2));
152154
assert_err(
153155
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)",
155157
);
156158

157159
#[rustfmt::skip]
158160
let test = || Ok(ensure!(if false {} else if false {}.t(1) == 2));
159161
assert_err(
160162
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)",
162164
);
163165

164166
#[rustfmt::skip]
165167
let test = || Ok(ensure!(if let 1 = 2 {}.t(1) == 2));
166168
assert_err(
167169
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)",
169171
);
170172

171173
#[rustfmt::skip]
172174
let test = || Ok(ensure!(if let 1 | 2 = 2 {}.t(1) == 2));
173175
assert_err(
174176
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)",
176178
);
177179

178180
#[rustfmt::skip]
179181
let test = || Ok(ensure!(if let | 1 | 2 = 2 {}.t(1) == 2));
180182
assert_err(
181183
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)",
183185
);
184186
}
185187

@@ -189,53 +191,49 @@ fn test_loop() {
189191
let test = || Ok(ensure!(1 + loop { break 1 } == 1));
190192
assert_err(
191193
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)",
195195
);
196196

197197
#[rustfmt::skip]
198198
let test = || Ok(ensure!(1 + 'a: loop { break 'a 1 } == 1));
199199
assert_err(
200200
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)",
204202
);
205203

206204
#[rustfmt::skip]
207205
let test = || Ok(ensure!(while false {}.t(1) == 2));
208206
assert_err(
209207
test,
210-
"Condition failed: `while false { }.t(1) == 2` (1 vs 2)",
208+
"Condition failed: `while false {}.t(1) == 2` (1 vs 2)",
211209
);
212210

213211
#[rustfmt::skip]
214212
let test = || Ok(ensure!(while let None = Some(1) {}.t(1) == 2));
215213
assert_err(
216214
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)",
218216
);
219217

220218
#[rustfmt::skip]
221219
let test = || Ok(ensure!(for _x in iter::once(0) {}.t(1) == 2));
222220
assert_err(
223221
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)",
225223
);
226224

227225
#[rustfmt::skip]
228226
let test = || Ok(ensure!(for | _x in iter::once(0) {}.t(1) == 2));
229227
assert_err(
230228
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)",
232230
);
233231

234232
#[rustfmt::skip]
235233
let test = || Ok(ensure!(for true | false in iter::empty() {}.t(1) == 2));
236234
assert_err(
237235
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)",
239237
);
240238
}
241239

@@ -381,7 +379,7 @@ fn test_macro() {
381379
let test = || Ok(ensure!(stringify! {} != ""));
382380
assert_err(
383381
test,
384-
"Condition failed: `stringify! { } != \"\"` (\"\" vs \"\")",
382+
"Condition failed: `stringify! {} != \"\"` (\"\" vs \"\")",
385383
);
386384
}
387385

@@ -663,7 +661,7 @@ fn test_pat() {
663661
let test = || Ok(ensure!(if let ::std::marker::PhantomData = p {} != ()));
664662
assert_err(
665663
test,
666-
"Condition failed: `if let ::std::marker::PhantomData = p { } != ()` (() vs ())",
664+
"Condition failed: `if let ::std::marker::PhantomData = p {} != ()` (() vs ())",
667665
);
668666

669667
let test = || Ok(ensure!(if let <S as Trait>::V = 0 { 0 } else { 1 } == 1));
@@ -675,7 +673,7 @@ fn test_pat() {
675673
let test = || Ok(ensure!(for _ in iter::once(()) {} != ()));
676674
assert_err(
677675
test,
678-
"Condition failed: `for _ in iter::once(()) { } != ()` (() vs ())",
676+
"Condition failed: `for _ in iter::once(()) {} != ()` (() vs ())",
679677
);
680678

681679
let test = || Ok(ensure!(if let stringify!(x) = "x" { 0 } else { 1 } == 1));

0 commit comments

Comments
 (0)