OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 | 6 |
7 import 'package:test/src/backend/group.dart'; | 7 import 'package:test/src/backend/group.dart'; |
8 import 'package:test/src/backend/invoker.dart'; | 8 import 'package:test/src/backend/invoker.dart'; |
9 import 'package:test/src/backend/suite.dart'; | 9 import 'package:test/src/backend/suite.dart'; |
10 import 'package:test/src/backend/test.dart'; | 10 import 'package:test/src/backend/test.dart'; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 expect(tests[2].name, equals("description 3")); | 58 expect(tests[2].name, equals("description 3")); |
59 }); | 59 }); |
60 }); | 60 }); |
61 | 61 |
62 group(".setUp()", () { | 62 group(".setUp()", () { |
63 test("is run before all tests", () async { | 63 test("is run before all tests", () async { |
64 var setUpRun = false; | 64 var setUpRun = false; |
65 var tests = declare(() { | 65 var tests = declare(() { |
66 setUp(() => setUpRun = true); | 66 setUp(() => setUpRun = true); |
67 | 67 |
68 test("description 1", expectAsync(() { | 68 test("description 1", expectAsync0(() { |
69 expect(setUpRun, isTrue); | 69 expect(setUpRun, isTrue); |
70 setUpRun = false; | 70 setUpRun = false; |
71 }, max: 1)); | 71 }, max: 1)); |
72 | 72 |
73 test("description 2", expectAsync(() { | 73 test("description 2", expectAsync0(() { |
74 expect(setUpRun, isTrue); | 74 expect(setUpRun, isTrue); |
75 setUpRun = false; | 75 setUpRun = false; |
76 }, max: 1)); | 76 }, max: 1)); |
77 }); | 77 }); |
78 | 78 |
79 await _runTest(tests[0]); | 79 await _runTest(tests[0]); |
80 await _runTest(tests[1]); | 80 await _runTest(tests[1]); |
81 }); | 81 }); |
82 | 82 |
83 test("can return a Future", () { | 83 test("can return a Future", () { |
84 var setUpRun = false; | 84 var setUpRun = false; |
85 var tests = declare(() { | 85 var tests = declare(() { |
86 setUp(() { | 86 setUp(() { |
87 return new Future(() => setUpRun = true); | 87 return new Future(() => setUpRun = true); |
88 }); | 88 }); |
89 | 89 |
90 test("description", expectAsync(() { | 90 test("description", expectAsync0(() { |
91 expect(setUpRun, isTrue); | 91 expect(setUpRun, isTrue); |
92 }, max: 1)); | 92 }, max: 1)); |
93 }); | 93 }); |
94 | 94 |
95 return _runTest(tests.single); | 95 return _runTest(tests.single); |
96 }); | 96 }); |
97 | 97 |
98 test("runs in call order within a group", () async { | 98 test("runs in call order within a group", () async { |
99 var firstSetUpRun = false; | 99 var firstSetUpRun = false; |
100 var secondSetUpRun = false; | 100 var secondSetUpRun = false; |
101 var thirdSetUpRun = false; | 101 var thirdSetUpRun = false; |
102 var tests = declare(() { | 102 var tests = declare(() { |
103 setUp(expectAsync(() async { | 103 setUp(expectAsync0(() async { |
104 expect(secondSetUpRun, isFalse); | 104 expect(secondSetUpRun, isFalse); |
105 expect(thirdSetUpRun, isFalse); | 105 expect(thirdSetUpRun, isFalse); |
106 firstSetUpRun = true; | 106 firstSetUpRun = true; |
107 })); | 107 })); |
108 | 108 |
109 setUp(expectAsync(() async { | 109 setUp(expectAsync0(() async { |
110 expect(firstSetUpRun, isTrue); | 110 expect(firstSetUpRun, isTrue); |
111 expect(thirdSetUpRun, isFalse); | 111 expect(thirdSetUpRun, isFalse); |
112 secondSetUpRun = true; | 112 secondSetUpRun = true; |
113 })); | 113 })); |
114 | 114 |
115 setUp(expectAsync(() async { | 115 setUp(expectAsync0(() async { |
116 expect(firstSetUpRun, isTrue); | 116 expect(firstSetUpRun, isTrue); |
117 expect(secondSetUpRun, isTrue); | 117 expect(secondSetUpRun, isTrue); |
118 thirdSetUpRun = true; | 118 thirdSetUpRun = true; |
119 })); | 119 })); |
120 | 120 |
121 test("description", expectAsync(() { | 121 test("description", expectAsync0(() { |
122 expect(firstSetUpRun, isTrue); | 122 expect(firstSetUpRun, isTrue); |
123 expect(secondSetUpRun, isTrue); | 123 expect(secondSetUpRun, isTrue); |
124 expect(thirdSetUpRun, isTrue); | 124 expect(thirdSetUpRun, isTrue); |
125 })); | 125 })); |
126 }); | 126 }); |
127 | 127 |
128 await _runTest(tests.single); | 128 await _runTest(tests.single); |
129 }); | 129 }); |
130 }); | 130 }); |
131 | 131 |
132 group(".tearDown()", () { | 132 group(".tearDown()", () { |
133 test("is run after all tests", () async { | 133 test("is run after all tests", () async { |
134 var tearDownRun; | 134 var tearDownRun; |
135 var tests = declare(() { | 135 var tests = declare(() { |
136 setUp(() => tearDownRun = false); | 136 setUp(() => tearDownRun = false); |
137 tearDown(() => tearDownRun = true); | 137 tearDown(() => tearDownRun = true); |
138 | 138 |
139 test("description 1", expectAsync(() { | 139 test("description 1", expectAsync0(() { |
140 expect(tearDownRun, isFalse); | 140 expect(tearDownRun, isFalse); |
141 }, max: 1)); | 141 }, max: 1)); |
142 | 142 |
143 test("description 2", expectAsync(() { | 143 test("description 2", expectAsync0(() { |
144 expect(tearDownRun, isFalse); | 144 expect(tearDownRun, isFalse); |
145 }, max: 1)); | 145 }, max: 1)); |
146 }); | 146 }); |
147 | 147 |
148 await _runTest(tests[0]); | 148 await _runTest(tests[0]); |
149 expect(tearDownRun, isTrue); | 149 expect(tearDownRun, isTrue); |
150 await _runTest(tests[1]); | 150 await _runTest(tests[1]); |
151 expect(tearDownRun, isTrue); | 151 expect(tearDownRun, isTrue); |
152 }); | 152 }); |
153 | 153 |
154 test("is run after an out-of-band failure", () async { | 154 test("is run after an out-of-band failure", () async { |
155 var tearDownRun; | 155 var tearDownRun; |
156 var tests = declare(() { | 156 var tests = declare(() { |
157 setUp(() => tearDownRun = false); | 157 setUp(() => tearDownRun = false); |
158 tearDown(() => tearDownRun = true); | 158 tearDown(() => tearDownRun = true); |
159 | 159 |
160 test("description 1", expectAsync(() { | 160 test("description 1", expectAsync0(() { |
161 Invoker.current.addOutstandingCallback(); | 161 Invoker.current.addOutstandingCallback(); |
162 new Future(() => throw new TestFailure("oh no")); | 162 new Future(() => throw new TestFailure("oh no")); |
163 }, max: 1)); | 163 }, max: 1)); |
164 }); | 164 }); |
165 | 165 |
166 await _runTest(tests.single, shouldFail: true); | 166 await _runTest(tests.single, shouldFail: true); |
167 expect(tearDownRun, isTrue); | 167 expect(tearDownRun, isTrue); |
168 }); | 168 }); |
169 | 169 |
170 test("can return a Future", () async { | 170 test("can return a Future", () async { |
171 var tearDownRun = false; | 171 var tearDownRun = false; |
172 var tests = declare(() { | 172 var tests = declare(() { |
173 tearDown(() { | 173 tearDown(() { |
174 return new Future(() => tearDownRun = true); | 174 return new Future(() => tearDownRun = true); |
175 }); | 175 }); |
176 | 176 |
177 test("description", expectAsync(() { | 177 test("description", expectAsync0(() { |
178 expect(tearDownRun, isFalse); | 178 expect(tearDownRun, isFalse); |
179 }, max: 1)); | 179 }, max: 1)); |
180 }); | 180 }); |
181 | 181 |
182 await _runTest(tests.single); | 182 await _runTest(tests.single); |
183 expect(tearDownRun, isTrue); | 183 expect(tearDownRun, isTrue); |
184 }); | 184 }); |
185 | 185 |
186 test("isn't run until there are no outstanding callbacks", () async { | 186 test("isn't run until there are no outstanding callbacks", () async { |
187 var outstandingCallbackRemoved = false; | 187 var outstandingCallbackRemoved = false; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 | 220 |
221 await _runTest(tests.single); | 221 await _runTest(tests.single); |
222 expect(outstandingCallbackRemoved, isTrue); | 222 expect(outstandingCallbackRemoved, isTrue); |
223 }); | 223 }); |
224 | 224 |
225 test("runs in reverse call order within a group", () async { | 225 test("runs in reverse call order within a group", () async { |
226 var firstTearDownRun = false; | 226 var firstTearDownRun = false; |
227 var secondTearDownRun = false; | 227 var secondTearDownRun = false; |
228 var thirdTearDownRun = false; | 228 var thirdTearDownRun = false; |
229 var tests = declare(() { | 229 var tests = declare(() { |
230 tearDown(expectAsync(() async { | 230 tearDown(expectAsync0(() async { |
231 expect(secondTearDownRun, isTrue); | 231 expect(secondTearDownRun, isTrue); |
232 expect(thirdTearDownRun, isTrue); | 232 expect(thirdTearDownRun, isTrue); |
233 firstTearDownRun = true; | 233 firstTearDownRun = true; |
234 })); | 234 })); |
235 | 235 |
236 tearDown(expectAsync(() async { | 236 tearDown(expectAsync0(() async { |
237 expect(firstTearDownRun, isFalse); | 237 expect(firstTearDownRun, isFalse); |
238 expect(thirdTearDownRun, isTrue); | 238 expect(thirdTearDownRun, isTrue); |
239 secondTearDownRun = true; | 239 secondTearDownRun = true; |
240 })); | 240 })); |
241 | 241 |
242 tearDown(expectAsync(() async { | 242 tearDown(expectAsync0(() async { |
243 expect(firstTearDownRun, isFalse); | 243 expect(firstTearDownRun, isFalse); |
244 expect(secondTearDownRun, isFalse); | 244 expect(secondTearDownRun, isFalse); |
245 thirdTearDownRun = true; | 245 thirdTearDownRun = true; |
246 })); | 246 })); |
247 | 247 |
248 test("description", expectAsync(() { | 248 test("description", expectAsync0(() { |
249 expect(firstTearDownRun, isFalse); | 249 expect(firstTearDownRun, isFalse); |
250 expect(secondTearDownRun, isFalse); | 250 expect(secondTearDownRun, isFalse); |
251 expect(thirdTearDownRun, isFalse); | 251 expect(thirdTearDownRun, isFalse); |
252 }, max: 1)); | 252 }, max: 1)); |
253 }); | 253 }); |
254 | 254 |
255 await _runTest(tests.single); | 255 await _runTest(tests.single); |
256 }); | 256 }); |
257 | 257 |
258 test("runs further tearDowns in a group even if one fails", () async { | 258 test("runs further tearDowns in a group even if one fails", () async { |
259 var tests = declare(() { | 259 var tests = declare(() { |
260 tearDown(expectAsync(() {})); | 260 tearDown(expectAsync0(() {})); |
261 | 261 |
262 tearDown(() async { | 262 tearDown(() async { |
263 throw 'error'; | 263 throw 'error'; |
264 }); | 264 }); |
265 | 265 |
266 test("description", expectAsync(() {})); | 266 test("description", expectAsync0(() {})); |
267 }); | 267 }); |
268 | 268 |
269 await _runTest(tests.single, shouldFail: true); | 269 await _runTest(tests.single, shouldFail: true); |
270 }); | 270 }); |
271 }); | 271 }); |
272 | 272 |
273 group("in a group,", () { | 273 group("in a group,", () { |
274 test("tests inherit the group's description", () { | 274 test("tests inherit the group's description", () { |
275 var entries = declare(() { | 275 var entries = declare(() { |
276 group("group", () { | 276 group("group", () { |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 }); | 360 }); |
361 }); | 361 }); |
362 | 362 |
363 group(".setUp()", () { | 363 group(".setUp()", () { |
364 test("is scoped to the group", () async { | 364 test("is scoped to the group", () async { |
365 var setUpRun = false; | 365 var setUpRun = false; |
366 var entries = declare(() { | 366 var entries = declare(() { |
367 group("group", () { | 367 group("group", () { |
368 setUp(() => setUpRun = true); | 368 setUp(() => setUpRun = true); |
369 | 369 |
370 test("description 1", expectAsync(() { | 370 test("description 1", expectAsync0(() { |
371 expect(setUpRun, isTrue); | 371 expect(setUpRun, isTrue); |
372 setUpRun = false; | 372 setUpRun = false; |
373 }, max: 1)); | 373 }, max: 1)); |
374 }); | 374 }); |
375 | 375 |
376 test("description 2", expectAsync(() { | 376 test("description 2", expectAsync0(() { |
377 expect(setUpRun, isFalse); | 377 expect(setUpRun, isFalse); |
378 setUpRun = false; | 378 setUpRun = false; |
379 }, max: 1)); | 379 }, max: 1)); |
380 }); | 380 }); |
381 | 381 |
382 await _runTest((entries[0] as Group).entries.single); | 382 await _runTest((entries[0] as Group).entries.single); |
383 await _runTest(entries[1]); | 383 await _runTest(entries[1]); |
384 }); | 384 }); |
385 | 385 |
386 test("runs from the outside in", () { | 386 test("runs from the outside in", () { |
387 var outerSetUpRun = false; | 387 var outerSetUpRun = false; |
388 var middleSetUpRun = false; | 388 var middleSetUpRun = false; |
389 var innerSetUpRun = false; | 389 var innerSetUpRun = false; |
390 var entries = declare(() { | 390 var entries = declare(() { |
391 setUp(expectAsync(() { | 391 setUp(expectAsync0(() { |
392 expect(middleSetUpRun, isFalse); | 392 expect(middleSetUpRun, isFalse); |
393 expect(innerSetUpRun, isFalse); | 393 expect(innerSetUpRun, isFalse); |
394 outerSetUpRun = true; | 394 outerSetUpRun = true; |
395 }, max: 1)); | 395 }, max: 1)); |
396 | 396 |
397 group("middle", () { | 397 group("middle", () { |
398 setUp(expectAsync(() { | 398 setUp(expectAsync0(() { |
399 expect(outerSetUpRun, isTrue); | 399 expect(outerSetUpRun, isTrue); |
400 expect(innerSetUpRun, isFalse); | 400 expect(innerSetUpRun, isFalse); |
401 middleSetUpRun = true; | 401 middleSetUpRun = true; |
402 }, max: 1)); | 402 }, max: 1)); |
403 | 403 |
404 group("inner", () { | 404 group("inner", () { |
405 setUp(expectAsync(() { | 405 setUp(expectAsync0(() { |
406 expect(outerSetUpRun, isTrue); | 406 expect(outerSetUpRun, isTrue); |
407 expect(middleSetUpRun, isTrue); | 407 expect(middleSetUpRun, isTrue); |
408 innerSetUpRun = true; | 408 innerSetUpRun = true; |
409 }, max: 1)); | 409 }, max: 1)); |
410 | 410 |
411 test("description", expectAsync(() { | 411 test("description", expectAsync0(() { |
412 expect(outerSetUpRun, isTrue); | 412 expect(outerSetUpRun, isTrue); |
413 expect(middleSetUpRun, isTrue); | 413 expect(middleSetUpRun, isTrue); |
414 expect(innerSetUpRun, isTrue); | 414 expect(innerSetUpRun, isTrue); |
415 }, max: 1)); | 415 }, max: 1)); |
416 }); | 416 }); |
417 }); | 417 }); |
418 }); | 418 }); |
419 | 419 |
420 var middleGroup = entries.single as Group; | 420 var middleGroup = entries.single as Group; |
421 var innerGroup = middleGroup.entries.single as Group; | 421 var innerGroup = middleGroup.entries.single as Group; |
422 return _runTest(innerGroup.entries.single); | 422 return _runTest(innerGroup.entries.single); |
423 }); | 423 }); |
424 | 424 |
425 test("handles Futures when chained", () { | 425 test("handles Futures when chained", () { |
426 var outerSetUpRun = false; | 426 var outerSetUpRun = false; |
427 var innerSetUpRun = false; | 427 var innerSetUpRun = false; |
428 var entries = declare(() { | 428 var entries = declare(() { |
429 setUp(expectAsync(() { | 429 setUp(expectAsync0(() { |
430 expect(innerSetUpRun, isFalse); | 430 expect(innerSetUpRun, isFalse); |
431 return new Future(() => outerSetUpRun = true); | 431 return new Future(() => outerSetUpRun = true); |
432 }, max: 1)); | 432 }, max: 1)); |
433 | 433 |
434 group("inner", () { | 434 group("inner", () { |
435 setUp(expectAsync(() { | 435 setUp(expectAsync0(() { |
436 expect(outerSetUpRun, isTrue); | 436 expect(outerSetUpRun, isTrue); |
437 return new Future(() => innerSetUpRun = true); | 437 return new Future(() => innerSetUpRun = true); |
438 }, max: 1)); | 438 }, max: 1)); |
439 | 439 |
440 test("description", expectAsync(() { | 440 test("description", expectAsync0(() { |
441 expect(outerSetUpRun, isTrue); | 441 expect(outerSetUpRun, isTrue); |
442 expect(innerSetUpRun, isTrue); | 442 expect(innerSetUpRun, isTrue); |
443 }, max: 1)); | 443 }, max: 1)); |
444 }); | 444 }); |
445 }); | 445 }); |
446 | 446 |
447 var innerGroup = entries.single as Group; | 447 var innerGroup = entries.single as Group; |
448 return _runTest(innerGroup.entries.single); | 448 return _runTest(innerGroup.entries.single); |
449 }); | 449 }); |
450 | 450 |
(...skipping 26 matching lines...) Expand all Loading... |
477 | 477 |
478 group(".tearDown()", () { | 478 group(".tearDown()", () { |
479 test("is scoped to the group", () async { | 479 test("is scoped to the group", () async { |
480 var tearDownRun; | 480 var tearDownRun; |
481 var entries = declare(() { | 481 var entries = declare(() { |
482 setUp(() => tearDownRun = false); | 482 setUp(() => tearDownRun = false); |
483 | 483 |
484 group("group", () { | 484 group("group", () { |
485 tearDown(() => tearDownRun = true); | 485 tearDown(() => tearDownRun = true); |
486 | 486 |
487 test("description 1", expectAsync(() { | 487 test("description 1", expectAsync0(() { |
488 expect(tearDownRun, isFalse); | 488 expect(tearDownRun, isFalse); |
489 }, max: 1)); | 489 }, max: 1)); |
490 }); | 490 }); |
491 | 491 |
492 test("description 2", expectAsync(() { | 492 test("description 2", expectAsync0(() { |
493 expect(tearDownRun, isFalse); | 493 expect(tearDownRun, isFalse); |
494 }, max: 1)); | 494 }, max: 1)); |
495 }); | 495 }); |
496 | 496 |
497 var testGroup = entries[0] as Group; | 497 var testGroup = entries[0] as Group; |
498 await _runTest(testGroup.entries.single); | 498 await _runTest(testGroup.entries.single); |
499 expect(tearDownRun, isTrue); | 499 expect(tearDownRun, isTrue); |
500 await _runTest(entries[1]); | 500 await _runTest(entries[1]); |
501 expect(tearDownRun, isFalse); | 501 expect(tearDownRun, isFalse); |
502 }); | 502 }); |
503 | 503 |
504 test("runs from the inside out", () async { | 504 test("runs from the inside out", () async { |
505 var innerTearDownRun = false; | 505 var innerTearDownRun = false; |
506 var middleTearDownRun = false; | 506 var middleTearDownRun = false; |
507 var outerTearDownRun = false; | 507 var outerTearDownRun = false; |
508 var entries = declare(() { | 508 var entries = declare(() { |
509 tearDown(expectAsync(() { | 509 tearDown(expectAsync0(() { |
510 expect(innerTearDownRun, isTrue); | 510 expect(innerTearDownRun, isTrue); |
511 expect(middleTearDownRun, isTrue); | 511 expect(middleTearDownRun, isTrue); |
512 outerTearDownRun = true; | 512 outerTearDownRun = true; |
513 }, max: 1)); | 513 }, max: 1)); |
514 | 514 |
515 group("middle", () { | 515 group("middle", () { |
516 tearDown(expectAsync(() { | 516 tearDown(expectAsync0(() { |
517 expect(innerTearDownRun, isTrue); | 517 expect(innerTearDownRun, isTrue); |
518 expect(outerTearDownRun, isFalse); | 518 expect(outerTearDownRun, isFalse); |
519 middleTearDownRun = true; | 519 middleTearDownRun = true; |
520 }, max: 1)); | 520 }, max: 1)); |
521 | 521 |
522 group("inner", () { | 522 group("inner", () { |
523 tearDown(expectAsync(() { | 523 tearDown(expectAsync0(() { |
524 expect(outerTearDownRun, isFalse); | 524 expect(outerTearDownRun, isFalse); |
525 expect(middleTearDownRun, isFalse); | 525 expect(middleTearDownRun, isFalse); |
526 innerTearDownRun = true; | 526 innerTearDownRun = true; |
527 }, max: 1)); | 527 }, max: 1)); |
528 | 528 |
529 test("description", expectAsync(() { | 529 test("description", expectAsync0(() { |
530 expect(outerTearDownRun, isFalse); | 530 expect(outerTearDownRun, isFalse); |
531 expect(middleTearDownRun, isFalse); | 531 expect(middleTearDownRun, isFalse); |
532 expect(innerTearDownRun, isFalse); | 532 expect(innerTearDownRun, isFalse); |
533 }, max: 1)); | 533 }, max: 1)); |
534 }); | 534 }); |
535 }); | 535 }); |
536 }); | 536 }); |
537 | 537 |
538 var middleGroup = entries.single as Group; | 538 var middleGroup = entries.single as Group; |
539 var innerGroup = middleGroup.entries.single as Group; | 539 var innerGroup = middleGroup.entries.single as Group; |
540 await _runTest(innerGroup.entries.single); | 540 await _runTest(innerGroup.entries.single); |
541 expect(innerTearDownRun, isTrue); | 541 expect(innerTearDownRun, isTrue); |
542 expect(middleTearDownRun, isTrue); | 542 expect(middleTearDownRun, isTrue); |
543 expect(outerTearDownRun, isTrue); | 543 expect(outerTearDownRun, isTrue); |
544 }); | 544 }); |
545 | 545 |
546 test("handles Futures when chained", () async { | 546 test("handles Futures when chained", () async { |
547 var outerTearDownRun = false; | 547 var outerTearDownRun = false; |
548 var innerTearDownRun = false; | 548 var innerTearDownRun = false; |
549 var entries = declare(() { | 549 var entries = declare(() { |
550 tearDown(expectAsync(() { | 550 tearDown(expectAsync0(() { |
551 expect(innerTearDownRun, isTrue); | 551 expect(innerTearDownRun, isTrue); |
552 return new Future(() => outerTearDownRun = true); | 552 return new Future(() => outerTearDownRun = true); |
553 }, max: 1)); | 553 }, max: 1)); |
554 | 554 |
555 group("inner", () { | 555 group("inner", () { |
556 tearDown(expectAsync(() { | 556 tearDown(expectAsync0(() { |
557 expect(outerTearDownRun, isFalse); | 557 expect(outerTearDownRun, isFalse); |
558 return new Future(() => innerTearDownRun = true); | 558 return new Future(() => innerTearDownRun = true); |
559 }, max: 1)); | 559 }, max: 1)); |
560 | 560 |
561 test("description", expectAsync(() { | 561 test("description", expectAsync0(() { |
562 expect(outerTearDownRun, isFalse); | 562 expect(outerTearDownRun, isFalse); |
563 expect(innerTearDownRun, isFalse); | 563 expect(innerTearDownRun, isFalse); |
564 }, max: 1)); | 564 }, max: 1)); |
565 }); | 565 }); |
566 }); | 566 }); |
567 | 567 |
568 var innerGroup = entries.single as Group; | 568 var innerGroup = entries.single as Group; |
569 await _runTest(innerGroup.entries.single); | 569 await _runTest(innerGroup.entries.single); |
570 expect(innerTearDownRun, isTrue); | 570 expect(innerTearDownRun, isTrue); |
571 expect(outerTearDownRun, isTrue); | 571 expect(outerTearDownRun, isTrue); |
572 }); | 572 }); |
573 | 573 |
574 test("runs outer callbacks even when inner ones fail", () async { | 574 test("runs outer callbacks even when inner ones fail", () async { |
575 var outerTearDownRun = false; | 575 var outerTearDownRun = false; |
576 var entries = declare(() { | 576 var entries = declare(() { |
577 tearDown(() { | 577 tearDown(() { |
578 return new Future(() => outerTearDownRun = true); | 578 return new Future(() => outerTearDownRun = true); |
579 }); | 579 }); |
580 | 580 |
581 group("inner", () { | 581 group("inner", () { |
582 tearDown(() { | 582 tearDown(() { |
583 throw 'inner error'; | 583 throw 'inner error'; |
584 }); | 584 }); |
585 | 585 |
586 test("description", expectAsync(() { | 586 test("description", expectAsync0(() { |
587 expect(outerTearDownRun, isFalse); | 587 expect(outerTearDownRun, isFalse); |
588 }, max: 1)); | 588 }, max: 1)); |
589 }); | 589 }); |
590 }); | 590 }); |
591 | 591 |
592 var innerGroup = entries.single as Group; | 592 var innerGroup = entries.single as Group; |
593 await _runTest(innerGroup.entries.single, shouldFail: true); | 593 await _runTest(innerGroup.entries.single, shouldFail: true); |
594 expect(outerTearDownRun, isTrue); | 594 expect(outerTearDownRun, isTrue); |
595 }); | 595 }); |
596 }); | 596 }); |
597 }); | 597 }); |
598 } | 598 } |
599 | 599 |
600 /// Runs [test]. | 600 /// Runs [test]. |
601 /// | 601 /// |
602 /// This automatically sets up an `onError` listener to ensure that the test | 602 /// This automatically sets up an `onError` listener to ensure that the test |
603 /// doesn't throw any invisible exceptions. | 603 /// doesn't throw any invisible exceptions. |
604 Future _runTest(Test test, {bool shouldFail: false}) { | 604 Future _runTest(Test test, {bool shouldFail: false}) { |
605 var liveTest = test.load(_suite); | 605 var liveTest = test.load(_suite); |
606 | 606 |
607 liveTest.onError.listen(shouldFail | 607 liveTest.onError.listen(shouldFail |
608 ? expectAsync((_) {}) | 608 ? expectAsync1((_) {}) |
609 : (error) => registerException(error.error, error.stackTrace)); | 609 : (error) => registerException(error.error, error.stackTrace)); |
610 | 610 |
611 return liveTest.run(); | 611 return liveTest.run(); |
612 } | 612 } |
OLD | NEW |