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 library test.runner; | 5 library test.runner; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:io'; | 8 import 'dart:io'; |
9 | 9 |
10 import 'package:async/async.dart'; | 10 import 'package:async/async.dart'; |
11 | 11 |
12 import 'backend/test_platform.dart'; | 12 import 'backend/test_platform.dart'; |
13 import 'runner/application_exception.dart'; | 13 import 'runner/application_exception.dart'; |
14 import 'runner/configuration.dart'; | 14 import 'runner/configuration.dart'; |
15 import 'runner/engine.dart'; | 15 import 'runner/engine.dart'; |
16 import 'runner/load_exception.dart'; | 16 import 'runner/load_exception.dart'; |
17 import 'runner/load_suite.dart'; | 17 import 'runner/load_suite.dart'; |
18 import 'runner/loader.dart'; | 18 import 'runner/loader.dart'; |
19 import 'runner/reporter.dart'; | 19 import 'runner/reporter.dart'; |
20 import 'runner/reporter/compact.dart'; | 20 import 'runner/reporter/compact.dart'; |
21 import 'runner/reporter/expanded.dart'; | 21 import 'runner/reporter/expanded.dart'; |
| 22 import 'runner/reporter/json.dart'; |
22 import 'runner/runner_suite.dart'; | 23 import 'runner/runner_suite.dart'; |
23 import 'util/io.dart'; | 24 import 'util/io.dart'; |
24 import 'utils.dart'; | 25 import 'utils.dart'; |
25 | 26 |
26 /// A class that loads and runs tests based on a [Configuration]. | 27 /// A class that loads and runs tests based on a [Configuration]. |
27 /// | 28 /// |
28 /// This maintains a [Loader] and an [Engine] and passes test suites from one to | 29 /// This maintains a [Loader] and an [Engine] and passes test suites from one to |
29 /// the other, as well as printing out tests with a [CompactReporter] or an | 30 /// the other, as well as printing out tests with a [CompactReporter] or an |
30 /// [ExpandedReporter]. | 31 /// [ExpandedReporter]. |
31 class Runner { | 32 class Runner { |
(...skipping 14 matching lines...) Expand all Loading... |
46 | 47 |
47 /// The memoizer for ensuring [close] only runs once. | 48 /// The memoizer for ensuring [close] only runs once. |
48 final _closeMemo = new AsyncMemoizer(); | 49 final _closeMemo = new AsyncMemoizer(); |
49 bool get _closed => _closeMemo.hasRun; | 50 bool get _closed => _closeMemo.hasRun; |
50 | 51 |
51 /// Creates a new runner based on [configuration]. | 52 /// Creates a new runner based on [configuration]. |
52 factory Runner(Configuration config) { | 53 factory Runner(Configuration config) { |
53 var loader = new Loader(config); | 54 var loader = new Loader(config); |
54 var engine = new Engine(concurrency: config.concurrency); | 55 var engine = new Engine(concurrency: config.concurrency); |
55 | 56 |
56 var watch = config.reporter == "compact" | 57 var reporter; |
57 ? CompactReporter.watch | 58 switch (config.reporter) { |
58 : ExpandedReporter.watch; | 59 case "compact": |
| 60 case "expanded": |
| 61 var watch = config.reporter == "compact" |
| 62 ? CompactReporter.watch |
| 63 : ExpandedReporter.watch; |
59 | 64 |
60 var reporter = watch( | 65 reporter = watch( |
61 engine, | 66 engine, |
62 color: config.color, | 67 color: config.color, |
63 verboseTrace: config.verboseTrace, | 68 verboseTrace: config.verboseTrace, |
64 printPath: config.paths.length > 1 || | 69 printPath: config.paths.length > 1 || |
65 new Directory(config.paths.single).existsSync(), | 70 new Directory(config.paths.single).existsSync(), |
66 printPlatform: config.platforms.length > 1); | 71 printPlatform: config.platforms.length > 1); |
| 72 break; |
| 73 |
| 74 case "json": |
| 75 reporter = JsonReporter.watch(engine, |
| 76 verboseTrace: config.verboseTrace); |
| 77 break; |
| 78 } |
67 | 79 |
68 return new Runner._(config, loader, engine, reporter); | 80 return new Runner._(config, loader, engine, reporter); |
69 } | 81 } |
70 | 82 |
71 Runner._(this._config, this._loader, this._engine, this._reporter); | 83 Runner._(this._config, this._loader, this._engine, this._reporter); |
72 | 84 |
73 /// Starts the runner. | 85 /// Starts the runner. |
74 /// | 86 /// |
75 /// This starts running tests and printing their progress. It returns whether | 87 /// This starts running tests and printing their progress. It returns whether |
76 /// or not they ran successfully. | 88 /// or not they ran successfully. |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 | 258 |
247 await inCompletionOrder([ | 259 await inCompletionOrder([ |
248 suite.environment.displayPause(), | 260 suite.environment.displayPause(), |
249 cancelableNext(stdinLines) | 261 cancelableNext(stdinLines) |
250 ]).first; | 262 ]).first; |
251 } finally { | 263 } finally { |
252 _reporter.resume(); | 264 _reporter.resume(); |
253 } | 265 } |
254 } | 266 } |
255 } | 267 } |
OLD | NEW |