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

Side by Side Diff: lib/src/runner/browser/platform.dart

Issue 2040883003: Add support for passing in precompiled JS. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Created 4 years, 6 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 | « no previous file | lib/src/runner/configuration.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 import 'dart:io'; 7 import 'dart:io';
8 8
9 import 'package:async/async.dart'; 9 import 'package:async/async.dart';
10 import 'package:http_multi_server/http_multi_server.dart'; 10 import 'package:http_multi_server/http_multi_server.dart';
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 _compilers = new CompilerPool(config) { 117 _compilers = new CompilerPool(config) {
118 var cascade = new shelf.Cascade() 118 var cascade = new shelf.Cascade()
119 .add(_webSocketHandler.handler); 119 .add(_webSocketHandler.handler);
120 120
121 if (_config.pubServeUrl == null) { 121 if (_config.pubServeUrl == null) {
122 cascade = cascade 122 cascade = cascade
123 .add(_createPackagesHandler()) 123 .add(_createPackagesHandler())
124 .add(_jsHandler.handler) 124 .add(_jsHandler.handler)
125 .add(createStaticHandler(_root)) 125 .add(createStaticHandler(_root))
126 .add(_wrapperHandler); 126 .add(_wrapperHandler);
127
128 if (config.precompiledPath != null) {
129 cascade = cascade.add(createStaticHandler(config.precompiledPath));
130 }
127 } 131 }
128 132
129 var pipeline = new shelf.Pipeline() 133 var pipeline = new shelf.Pipeline()
130 .addMiddleware(nestingMiddleware(_secret)) 134 .addMiddleware(nestingMiddleware(_secret))
131 .addHandler(cascade.handler); 135 .addHandler(cascade.handler);
132 136
133 _server.mount(pipeline); 137 _server.mount(pipeline);
134 } 138 }
135 139
136 /// Returns a handler that serves the contents of the "packages/" directory 140 /// Returns a handler that serves the contents of the "packages/" directory
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 dartUrl = _config.pubServeUrl.resolve( 239 dartUrl = _config.pubServeUrl.resolve(
236 "$suitePrefix.html.polymer.bootstrap.dart.browser_test.dart"); 240 "$suitePrefix.html.polymer.bootstrap.dart.browser_test.dart");
237 } else { 241 } else {
238 dartUrl = _config.pubServeUrl.resolve( 242 dartUrl = _config.pubServeUrl.resolve(
239 '$suitePrefix.dart.browser_test.dart'); 243 '$suitePrefix.dart.browser_test.dart');
240 } 244 }
241 245
242 await _pubServeSuite(path, dartUrl, browser); 246 await _pubServeSuite(path, dartUrl, browser);
243 suiteUrl = _config.pubServeUrl.resolveUri(p.toUri('$suitePrefix.html')); 247 suiteUrl = _config.pubServeUrl.resolveUri(p.toUri('$suitePrefix.html'));
244 } else { 248 } else {
245 if (browser.isJS) await _compileSuite(path); 249 if (browser.isJS && !_precompiled(path)) await _compileSuite(path);
246 if (_closed) return null; 250 if (_closed) return null;
247 suiteUrl = url.resolveUri(p.toUri( 251 suiteUrl = url.resolveUri(p.toUri(
248 p.withoutExtension(p.relative(path, from: _root)) + ".html")); 252 p.withoutExtension(p.relative(path, from: _root)) + ".html"));
249 } 253 }
250 254
251 if (_closed) return null; 255 if (_closed) return null;
252 256
253 // TODO(nweiz): Don't start the browser until all the suites are compiled. 257 // TODO(nweiz): Don't start the browser until all the suites are compiled.
254 var browserManager = await _browserManagerFor(browser); 258 var browserManager = await _browserManagerFor(browser);
255 if (_closed) return null; 259 if (_closed) return null;
256 260
257 var suite = await browserManager.load(path, suiteUrl, metadata, 261 var suite = await browserManager.load(path, suiteUrl, metadata,
258 mapper: browser.isJS ? _mappers[path] : null); 262 mapper: browser.isJS ? _mappers[path] : null);
259 if (_closed) return null; 263 if (_closed) return null;
260 return suite; 264 return suite;
261 } 265 }
262 266
267 /// Returns whether the test at [path] has precompiled JS available underneath
268 /// `_config.precompiledPath`.
269 bool _precompiled(String path) {
270 if (_config.precompiledPath == null) return false;
271 var jsPath =
272 p.join(_config.precompiledPath, p.relative(path, from: _root)) +
273 ".browser_test.dart.js";
274 print("does $jsPath exist? ${new File(jsPath).existsSync()}");
275 return new File(jsPath).existsSync();
276 }
277
263 StreamChannel loadChannel(String path, TestPlatform platform) => 278 StreamChannel loadChannel(String path, TestPlatform platform) =>
264 throw new UnimplementedError(); 279 throw new UnimplementedError();
265 280
266 /// Loads a test suite at [path] from the `pub serve` URL [dartUrl]. 281 /// Loads a test suite at [path] from the `pub serve` URL [dartUrl].
267 /// 282 ///
268 /// This ensures that only one suite is loaded at a time, and that any errors 283 /// This ensures that only one suite is loaded at a time, and that any errors
269 /// are exposed as [LoadException]s. 284 /// are exposed as [LoadException]s.
270 Future _pubServeSuite(String path, Uri dartUrl, TestPlatform browser) { 285 Future _pubServeSuite(String path, Uri dartUrl, TestPlatform browser) {
271 return _pubServePool.withResource(() async { 286 return _pubServePool.withResource(() async {
272 var timer = new Timer(new Duration(seconds: 1), () { 287 var timer = new Timer(new Duration(seconds: 1), () {
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 await Future.wait(futures); 438 await Future.wait(futures);
424 439
425 if (_config.pubServeUrl == null) { 440 if (_config.pubServeUrl == null) {
426 new Directory(_compiledDir).deleteSync(recursive: true); 441 new Directory(_compiledDir).deleteSync(recursive: true);
427 } else { 442 } else {
428 _http.close(); 443 _http.close();
429 } 444 }
430 }); 445 });
431 final _closeMemo = new AsyncMemoizer(); 446 final _closeMemo = new AsyncMemoizer();
432 } 447 }
OLDNEW
« no previous file with comments | « no previous file | lib/src/runner/configuration.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698