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

Unified Diff: lib/src/runner/vm/isolate_listener.dart

Issue 1379203002: Refactor groups to pipe them through to the runner. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Code review changes Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/src/runner/runner_suite.dart ('k') | lib/src/runner/vm/isolate_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/runner/vm/isolate_listener.dart
diff --git a/lib/src/runner/vm/isolate_listener.dart b/lib/src/runner/vm/isolate_listener.dart
index 06e2d6a9693c4941ff8dd0e48c7cdd98af35cbb9..7b6aa5393b85d7d8c123eba5100229ca4f12a473 100644
--- a/lib/src/runner/vm/isolate_listener.dart
+++ b/lib/src/runner/vm/isolate_listener.dart
@@ -10,8 +10,10 @@ import 'dart:async';
import 'package:stack_trace/stack_trace.dart';
import '../../backend/declarer.dart';
+import '../../backend/group.dart';
import '../../backend/metadata.dart';
import '../../backend/suite.dart';
+import '../../backend/suite_entry.dart';
import '../../backend/test.dart';
import '../../backend/test_platform.dart';
import '../../util/io.dart';
@@ -71,13 +73,14 @@ class IsolateListener {
return;
}
- var declarer = new Declarer();
+ var declarer = new Declarer(metadata);
try {
- await runZoned(() => new Future.sync(main), zoneValues: {
- #test.declarer: declarer
- }, zoneSpecification: new ZoneSpecification(print: (_, __, ___, line) {
- sendPort.send({"type": "print", "line": line});
- }));
+ await declarer.declare(() {
+ return runZoned(() => new Future.sync(main),
+ zoneSpecification: new ZoneSpecification(print: (_, __, ___, line) {
+ sendPort.send({"type": "print", "line": line});
+ }));
+ });
} catch (error, stackTrace) {
sendPort.send({
"type": "error",
@@ -86,7 +89,7 @@ class IsolateListener {
return;
}
- var suite = new Suite(declarer.tests,
+ var suite = new Suite(declarer.build(),
platform: TestPlatform.vm, os: currentOS, metadata: metadata);
new IsolateListener._(suite)._listen(sendPort);
}
@@ -103,26 +106,38 @@ class IsolateListener {
/// Send information about [_suite] across [sendPort] and start listening for
/// commands to run the tests.
void _listen(SendPort sendPort) {
- var tests = [];
- for (var i = 0; i < _suite.tests.length; i++) {
- var test = _suite.tests[i];
- var receivePort = new ReceivePort();
- tests.add({
- "name": test.name,
- "metadata": test.metadata.serialize(),
- "sendPort": receivePort.sendPort
- });
+ sendPort.send({
+ "type": "success",
+ "entries": _serializeEntries(_suite.entries)
+ });
+ }
+ /// Serializes [entries] into an Isolate-safe map.
+ List<Map> _serializeEntries(List<SuiteEntry> entries) {
+ return entries.map((entry) {
+ if (entry is Group) {
+ return {
+ "type": "group",
+ "name": entry.name,
+ "metadata": entry.metadata.serialize(),
+ "entries": _serializeEntries(entry.entries)
+ };
+ }
+
+ var test = entry as Test;
+ var receivePort = new ReceivePort();
receivePort.listen((message) {
assert(message['command'] == 'run');
_runTest(test, message['reply']);
});
- }
- sendPort.send({
- "type": "success",
- "tests": tests
- });
+ return {
+ "type": "test",
+ "name": test.name,
+ "metadata": test.metadata.serialize(),
+ "sendPort": receivePort.sendPort
+ };
+ }).toList();
}
/// Runs [test] and sends the results across [sendPort].
« no previous file with comments | « lib/src/runner/runner_suite.dart ('k') | lib/src/runner/vm/isolate_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698