| Index: lib/src/runner/loader.dart
|
| diff --git a/lib/src/runner/loader.dart b/lib/src/runner/loader.dart
|
| index 14e33503a1bc5cd32e00c55287f31f27dcb5b864..498b14bda176fe1b45019125ebf77b3707966af6 100644
|
| --- a/lib/src/runner/loader.dart
|
| +++ b/lib/src/runner/loader.dart
|
| @@ -135,35 +135,41 @@ class Loader {
|
| 'When using "pub serve", all test files must be in test/.');
|
| }
|
|
|
| - if (platform.isBrowser) return _loadBrowserFile(path, platform);
|
| - assert(platform == TestPlatform.vm);
|
| - return _loadVmFile(path);
|
| + if (platform == TestPlatform.vm) return _loadVmFile(path, metadata);
|
| + assert(platform.isBrowser);
|
| + return _loadBrowserFile(path, platform, metadata);
|
| }).then((suite) {
|
| if (suite == null) return;
|
|
|
| - controller.add(suite
|
| - .change(metadata: metadata).filter(platform, os: currentOS));
|
| + controller.add(suite.filter(platform, os: currentOS));
|
| }).catchError(controller.addError);
|
| }).then((_) => controller.close());
|
|
|
| return controller.stream;
|
| }
|
|
|
| - /// Load the test suite at [path] in a browser.
|
| - Future<Suite> _loadBrowserFile(String path, TestPlatform platform) =>
|
| + /// Load the test suite at [path] in [platform].
|
| + ///
|
| + /// [metadata] is the suite-level metadata for the test.
|
| + Future<Suite> _loadBrowserFile(String path, TestPlatform platform,
|
| + Metadata metadata) =>
|
| _browserServer.then((browserServer) =>
|
| - browserServer.loadSuite(path, platform));
|
| + browserServer.loadSuite(path, platform, metadata));
|
|
|
| /// Load the test suite at [path] in VM isolate.
|
| - Future<Suite> _loadVmFile(String path) {
|
| + ///
|
| + /// [metadata] is the suite-level metadata for the test.
|
| + Future<Suite> _loadVmFile(String path, Metadata metadata) {
|
| var receivePort = new ReceivePort();
|
|
|
| return new Future.sync(() {
|
| if (_pubServeUrl != null) {
|
| var url = _pubServeUrl.resolve(
|
| p.relative(path, from: 'test') + '.vm_test.dart');
|
| - return Isolate.spawnUri(url, [], {'reply': receivePort.sendPort})
|
| - .then((isolate) => new IsolateWrapper(isolate, () {}))
|
| + return Isolate.spawnUri(url, [], {
|
| + 'reply': receivePort.sendPort,
|
| + 'metadata': metadata.serialize()
|
| + }).then((isolate) => new IsolateWrapper(isolate, () {}))
|
| .catchError((error, stackTrace) {
|
| if (error is! IsolateSpawnException) throw error;
|
|
|
| @@ -181,16 +187,19 @@ class Loader {
|
| });
|
| } else {
|
| return runInIsolate('''
|
| +import "package:test/src/backend/metadata.dart";
|
| import "package:test/src/runner/vm/isolate_listener.dart";
|
|
|
| import "${p.toUri(p.absolute(path))}" as test;
|
|
|
| void main(_, Map message) {
|
| var sendPort = message['reply'];
|
| - IsolateListener.start(sendPort, () => test.main);
|
| + var metadata = new Metadata.deserialize(message['metadata']);
|
| + IsolateListener.start(sendPort, metadata, () => test.main);
|
| }
|
| ''', {
|
| - 'reply': receivePort.sendPort
|
| + 'reply': receivePort.sendPort,
|
| + 'metadata': metadata.serialize()
|
| }, packageRoot: _packageRoot);
|
| }
|
| }).catchError((error, stackTrace) {
|
| @@ -211,9 +220,9 @@ void main(_, Map message) {
|
| }
|
|
|
| return new Suite(response["tests"].map((test) {
|
| - var metadata = new Metadata.deserialize(test['metadata']);
|
| - return new IsolateTest(test['name'], metadata, test['sendPort']);
|
| - }), path: path, platform: "VM");
|
| + var testMetadata = new Metadata.deserialize(test['metadata']);
|
| + return new IsolateTest(test['name'], testMetadata, test['sendPort']);
|
| + }), metadata: metadata, path: path, platform: "VM");
|
| });
|
| }
|
|
|
|
|