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 import 'dart:convert'; | 6 import 'dart:convert'; |
7 | 7 |
8 import '../../backend/group.dart'; | 8 import '../../backend/group.dart'; |
9 import '../../backend/live_test.dart'; | 9 import '../../backend/live_test.dart'; |
10 import '../../backend/metadata.dart'; | 10 import '../../backend/metadata.dart'; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 } | 59 } |
60 | 60 |
61 JsonReporter._(this._engine, {bool verboseTrace: false}) | 61 JsonReporter._(this._engine, {bool verboseTrace: false}) |
62 : _verboseTrace = verboseTrace { | 62 : _verboseTrace = verboseTrace { |
63 _subscriptions.add(_engine.onTestStarted.listen(_onTestStarted)); | 63 _subscriptions.add(_engine.onTestStarted.listen(_onTestStarted)); |
64 | 64 |
65 /// Convert the future to a stream so that the subscription can be paused or | 65 /// Convert the future to a stream so that the subscription can be paused or |
66 /// canceled. | 66 /// canceled. |
67 _subscriptions.add(_engine.success.asStream().listen(_onDone)); | 67 _subscriptions.add(_engine.success.asStream().listen(_onDone)); |
68 | 68 |
| 69 _subscriptions.add(_engine.onSuiteAdded.listen(null, onDone: () { |
| 70 _emit("allSuites", { |
| 71 "count": _engine.addedSuites.length |
| 72 }); |
| 73 })); |
| 74 |
69 _emit("start", { | 75 _emit("start", { |
70 "protocolVersion": "0.1.0", | 76 "protocolVersion": "0.1.0", |
71 "runnerVersion": testVersion | 77 "runnerVersion": testVersion |
72 }); | 78 }); |
73 } | 79 } |
74 | 80 |
75 void pause() { | 81 void pause() { |
76 if (_paused) return; | 82 if (_paused) return; |
77 _paused = true; | 83 _paused = true; |
78 | 84 |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 | 193 |
188 var id = _nextID++; | 194 var id = _nextID++; |
189 _groupIDs[group] = id; | 195 _groupIDs[group] = id; |
190 | 196 |
191 _emit("group", { | 197 _emit("group", { |
192 "group": { | 198 "group": { |
193 "id": id, | 199 "id": id, |
194 "suiteID": suiteID, | 200 "suiteID": suiteID, |
195 "parentID": parentID, | 201 "parentID": parentID, |
196 "name": group.name, | 202 "name": group.name, |
197 "metadata": _serializeMetadata(group.metadata) | 203 "metadata": _serializeMetadata(group.metadata), |
| 204 "testCount": group.testCount |
198 } | 205 } |
199 }); | 206 }); |
200 parentID = id; | 207 parentID = id; |
201 return id; | 208 return id; |
202 }).toList(); | 209 }).toList(); |
203 } | 210 } |
204 | 211 |
205 /// Serializes [metadata] into a JSON-protocol-compatible map. | 212 /// Serializes [metadata] into a JSON-protocol-compatible map. |
206 Map _serializeMetadata(Metadata metadata) => | 213 Map _serializeMetadata(Metadata metadata) => |
207 {"skip": metadata.skip, "skipReason": metadata.skipReason}; | 214 {"skip": metadata.skip, "skipReason": metadata.skipReason}; |
(...skipping 28 matching lines...) Expand all Loading... |
236 _emit("done", {"success": success}); | 243 _emit("done", {"success": success}); |
237 } | 244 } |
238 | 245 |
239 /// Emits an event with the given type and attributes. | 246 /// Emits an event with the given type and attributes. |
240 void _emit(String type, Map attributes) { | 247 void _emit(String type, Map attributes) { |
241 attributes["type"] = type; | 248 attributes["type"] = type; |
242 attributes["time"] = _stopwatch.elapsed.inMilliseconds; | 249 attributes["time"] = _stopwatch.elapsed.inMilliseconds; |
243 print(JSON.encode(attributes)); | 250 print(JSON.encode(attributes)); |
244 } | 251 } |
245 } | 252 } |
OLD | NEW |