Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: lib/src/runner/engine.dart

Issue 2099503002: Add a dedicated Result for skipped tests. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Code review changes Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/src/frontend/expect_async.dart ('k') | lib/src/runner/live_suite_controller.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 import 'dart:collection'; 6 import 'dart:collection';
7 7
8 import 'package:async/async.dart' hide Result; 8 import 'package:async/async.dart' hide Result;
9 import 'package:collection/collection.dart'; 9 import 'package:collection/collection.dart';
10 import 'package:pool/pool.dart'; 10 import 'package:pool/pool.dart';
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 66
67 /// A pool that limits the number of test suites running concurrently. 67 /// A pool that limits the number of test suites running concurrently.
68 final Pool _runPool; 68 final Pool _runPool;
69 69
70 /// A pool that limits the number of test suites loaded concurrently. 70 /// A pool that limits the number of test suites loaded concurrently.
71 /// 71 ///
72 /// Once this reaches its limit, loading any additional test suites will cause 72 /// Once this reaches its limit, loading any additional test suites will cause
73 /// previous suites to be unloaded in the order they completed. 73 /// previous suites to be unloaded in the order they completed.
74 final Pool _loadPool; 74 final Pool _loadPool;
75 75
76 /// Whether all tests passed. 76 /// Whether all tests passed or were skipped.
77 /// 77 ///
78 /// This fires once all tests have completed and [suiteSink] has been closed. 78 /// This fires once all tests have completed and [suiteSink] has been closed.
79 /// This will be `null` if [close] was called before all the tests finished 79 /// This will be `null` if [close] was called before all the tests finished
80 /// running. 80 /// running.
81 Future<bool> get success async { 81 Future<bool> get success async {
82 await _group.future; 82 await _group.future;
83 if (_closedBeforeDone) return null; 83 if (_closedBeforeDone) return null;
84 return liveTests.every((liveTest) => 84 return liveTests.every((liveTest) => liveTest.state.result.isPassing);
85 liveTest.state.result == Result.success);
86 } 85 }
87 86
88 /// A group of futures for each test suite. 87 /// A group of futures for each test suite.
89 final _group = new FutureGroup(); 88 final _group = new FutureGroup();
90 89
91 /// A sink used to pass [RunnerSuite]s in to the engine to run. 90 /// A sink used to pass [RunnerSuite]s in to the engine to run.
92 /// 91 ///
93 /// Suites may be added as quickly as they're available; the Engine will only 92 /// Suites may be added as quickly as they're available; the Engine will only
94 /// run as many as necessary at a time based on its concurrency settings. 93 /// run as many as necessary at a time based on its concurrency settings.
95 /// 94 ///
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 if (group.metadata.skip) { 278 if (group.metadata.skip) {
280 await _runSkippedTest(suiteController, group, parents); 279 await _runSkippedTest(suiteController, group, parents);
281 return; 280 return;
282 } 281 }
283 282
284 var setUpAllSucceeded = true; 283 var setUpAllSucceeded = true;
285 if (group.setUpAll != null) { 284 if (group.setUpAll != null) {
286 var liveTest = group.setUpAll.load(suiteController.liveSuite.suite, 285 var liveTest = group.setUpAll.load(suiteController.liveSuite.suite,
287 groups: parents); 286 groups: parents);
288 await _runLiveTest(suiteController, liveTest, countSuccess: false); 287 await _runLiveTest(suiteController, liveTest, countSuccess: false);
289 setUpAllSucceeded = liveTest.state.result == Result.success; 288 setUpAllSucceeded = liveTest.state.result.isPassing;
290 } 289 }
291 290
292 if (!_closed && setUpAllSucceeded) { 291 if (!_closed && setUpAllSucceeded) {
293 for (var entry in group.entries) { 292 for (var entry in group.entries) {
294 if (_closed) return; 293 if (_closed) return;
295 294
296 if (entry is Group) { 295 if (entry is Group) {
297 await _runGroup(suiteController, entry, parents); 296 await _runGroup(suiteController, entry, parents);
298 } else if (entry.metadata.skip) { 297 } else if (entry.metadata.skip) {
299 await _runSkippedTest(suiteController, entry, parents); 298 await _runSkippedTest(suiteController, entry, parents);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 Future _runSkippedTest(LiveSuiteController suiteController, GroupEntry entry, 364 Future _runSkippedTest(LiveSuiteController suiteController, GroupEntry entry,
366 List<Group> parents) { 365 List<Group> parents) {
367 // The netry name will be `null` for the root group. 366 // The netry name will be `null` for the root group.
368 var test = new LocalTest(entry.name ?? "(suite)", entry.metadata, () {}, 367 var test = new LocalTest(entry.name ?? "(suite)", entry.metadata, () {},
369 trace: entry.trace); 368 trace: entry.trace);
370 369
371 var controller; 370 var controller;
372 controller = new LiveTestController( 371 controller = new LiveTestController(
373 suiteController.liveSuite.suite, test, () { 372 suiteController.liveSuite.suite, test, () {
374 controller.setState(const State(Status.running, Result.success)); 373 controller.setState(const State(Status.running, Result.success));
375 controller.setState(const State(Status.complete, Result.success)); 374 controller.setState(const State(Status.running, Result.skipped));
375 controller.setState(const State(Status.complete, Result.skipped));
376 controller.completer.complete(); 376 controller.completer.complete();
377 }, () {}, groups: parents); 377 }, () {}, groups: parents);
378 378
379 return _runLiveTest(suiteController, controller.liveTest); 379 return _runLiveTest(suiteController, controller.liveTest);
380 } 380 }
381 381
382 /// Closes [liveTest] and tells the engine to re-run it once it's done 382 /// Closes [liveTest] and tells the engine to re-run it once it's done
383 /// running. 383 /// running.
384 /// 384 ///
385 /// Returns the same future as [LiveTest.close]. 385 /// Returns the same future as [LiveTest.close].
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 var futures = allLiveTests.map((liveTest) => liveTest.close()).toList(); 481 var futures = allLiveTests.map((liveTest) => liveTest.close()).toList();
482 482
483 // Closing the load pool will close the test suites as soon as their tests 483 // Closing the load pool will close the test suites as soon as their tests
484 // are done. For browser suites this is effectively immediate since their 484 // are done. For browser suites this is effectively immediate since their
485 // tests shut down as soon as they're closed, but for VM suites we may need 485 // tests shut down as soon as they're closed, but for VM suites we may need
486 // to wait for tearDowns or tearDownAlls to run. 486 // to wait for tearDowns or tearDownAlls to run.
487 futures.add(_loadPool.close()); 487 futures.add(_loadPool.close());
488 await Future.wait(futures, eagerError: true); 488 await Future.wait(futures, eagerError: true);
489 } 489 }
490 } 490 }
OLDNEW
« no previous file with comments | « lib/src/frontend/expect_async.dart ('k') | lib/src/runner/live_suite_controller.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698