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

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

Issue 1309493002: Add a hacky hook to override the loader behavior. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Created 5 years, 4 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 | « CHANGELOG.md ('k') | pubspec.yaml » ('j') | pubspec.yaml » ('J')
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 library test.runner.loader; 5 library test.runner.loader;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:io'; 8 import 'dart:io';
9 import 'dart:isolate'; 9 import 'dart:isolate';
10 10
(...skipping 11 matching lines...) Expand all
22 import '../utils.dart'; 22 import '../utils.dart';
23 import 'configuration.dart'; 23 import 'configuration.dart';
24 import 'browser/server.dart'; 24 import 'browser/server.dart';
25 import 'load_exception.dart'; 25 import 'load_exception.dart';
26 import 'load_suite.dart'; 26 import 'load_suite.dart';
27 import 'parse_metadata.dart'; 27 import 'parse_metadata.dart';
28 import 'runner_suite.dart'; 28 import 'runner_suite.dart';
29 import 'vm/environment.dart'; 29 import 'vm/environment.dart';
30 import 'vm/isolate_test.dart'; 30 import 'vm/isolate_test.dart';
31 31
32 typedef Future<RunnerSuite> LoadVMFileHook(String path, Metadata metadata,
33 Configuration config);
34
32 /// A class for finding test files and loading them into a runnable form. 35 /// A class for finding test files and loading them into a runnable form.
33 class Loader { 36 class Loader {
37 /// **Do not set or use this function without express permission from the test
38 /// package authors**.
39 ///
40 /// A function that overrides the loader's default behavior for loading test
41 /// suites on the Dart VM. This function takes the path to the file, the
42 /// file's metadata, and the test runner's configuration and returns a
43 /// [RunnerSuite] for that file.
44 static LoadVMFileHook loadVMFileHook;
Bob Nystrom 2015/08/20 22:04:47 Maybe put this in a separate scary-named library?
nweiz 2015/08/20 22:19:02 Done. Not attaching it to Loader will also make li
45
34 /// The test runner configuration. 46 /// The test runner configuration.
35 final Configuration _config; 47 final Configuration _config;
36 48
37 /// The root directory that will be served for browser tests. 49 /// The root directory that will be served for browser tests.
38 final String _root; 50 final String _root;
39 51
40 /// All suites that have been created by the loader. 52 /// All suites that have been created by the loader.
41 final _suites = new Set<RunnerSuite>(); 53 final _suites = new Set<RunnerSuite>();
42 54
43 /// The server that serves browser test pages. 55 /// The server that serves browser test pages.
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 /// 149 ///
138 /// [metadata] is the suite-level metadata for the test. 150 /// [metadata] is the suite-level metadata for the test.
139 Future<RunnerSuite> _loadBrowserFile(String path, TestPlatform platform, 151 Future<RunnerSuite> _loadBrowserFile(String path, TestPlatform platform,
140 Metadata metadata) async => 152 Metadata metadata) async =>
141 (await _browserServer).loadSuite(path, platform, metadata); 153 (await _browserServer).loadSuite(path, platform, metadata);
142 154
143 /// Load the test suite at [path] in VM isolate. 155 /// Load the test suite at [path] in VM isolate.
144 /// 156 ///
145 /// [metadata] is the suite-level metadata for the test. 157 /// [metadata] is the suite-level metadata for the test.
146 Future<RunnerSuite> _loadVmFile(String path, Metadata metadata) async { 158 Future<RunnerSuite> _loadVmFile(String path, Metadata metadata) async {
159 if (Loader.loadVMFileHook != null) {
160 var suite = await Loader.loadVMFileHook(path, metadata, _config);
161 _suites.add(suite);
162 return suite;
163 }
164
147 var receivePort = new ReceivePort(); 165 var receivePort = new ReceivePort();
148 166
149 var isolate; 167 var isolate;
150 try { 168 try {
151 if (_config.pubServeUrl != null) { 169 if (_config.pubServeUrl != null) {
152 var url = _config.pubServeUrl.resolveUri( 170 var url = _config.pubServeUrl.resolveUri(
153 p.toUri(p.relative(path, from: 'test') + '.vm_test.dart')); 171 p.toUri(p.relative(path, from: 'test') + '.vm_test.dart'));
154 172
155 try { 173 try {
156 isolate = await Isolate.spawnUri(url, [], { 174 isolate = await Isolate.spawnUri(url, [], {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 Future close() { 256 Future close() {
239 return _closeMemo.runOnce(() async { 257 return _closeMemo.runOnce(() async {
240 await Future.wait(_suites.map((suite) => suite.close())); 258 await Future.wait(_suites.map((suite) => suite.close()));
241 _suites.clear(); 259 _suites.clear();
242 260
243 if (!_browserServerMemo.hasRun) return; 261 if (!_browserServerMemo.hasRun) return;
244 await (await _browserServer).close(); 262 await (await _browserServer).close();
245 }); 263 });
246 } 264 }
247 } 265 }
OLDNEW
« no previous file with comments | « CHANGELOG.md ('k') | pubspec.yaml » ('j') | pubspec.yaml » ('J')

Powered by Google App Engine
This is Rietveld 408576698