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

Side by Side Diff: lib/pub_serve.dart

Issue 1062523003: Add support for --pub-serve. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Created 5 years, 8 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
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 import 'dart:convert';
6
7 import 'package:barback/barback.dart';
8 import 'package:path/path.dart' as p;
9
10 /// A transformer that injects bootstrapping code used by the test runner to run
11 /// tests against a "pub serve" instance.
12 ///
13 /// This doesn't modify existing code at all, it just adds wrapper files that
14 /// can be used to load isolates or iframes.
15 class PubServeTransformer extends Transformer implements DeclaringTransformer {
16 final allowedExtensions = ".dart";
17
18 PubServeTransformer.asPlugin();
19
20 void declareOutputs(DeclaringTransform transform) {
21 var id = transform.primaryId;
22 transform.declareOutput(id.changeExtension('.vm_test.dart'));
23 transform.declareOutput(id.changeExtension('.browser_test.dart'));
24 transform.declareOutput(id.changeExtension('.browser_test.html'));
25 }
26
27 void apply(Transform transform) {
28 var id = transform.primaryInput.id;
29
30 transform.addOutput(
31 new Asset.fromString(id.changeExtension('.vm_test.dart'), '''
32 import "package:test/src/runner/vm/isolate_listener.dart";
33
34 import "${p.url.basename(id.path)}" as test;
35
36 void main(_, Map message) {
37 var sendPort = message['reply'];
38 IsolateListener.start(sendPort, () => test.main);
39 }
40 '''));
41
42 var browserId = id.changeExtension('.browser_test.dart');
43 transform.addOutput(new Asset.fromString(browserId, '''
44 import "package:test/src/runner/browser/iframe_listener.dart";
45
46 import "${p.url.basename(id.path)}" as test;
47
48 void main(_) {
49 IframeListener.start(() => test.main);
50 }
51 '''));
52
53 transform.addOutput(
54 new Asset.fromString(browserId.changeExtension('.html'), '''
55 <!DOCTYPE html>
56 <html>
57 <head>
58 <title>${HTML_ESCAPE.convert(id.path)} Test</title>
59 <script src="${HTML_ESCAPE.convert(p.url.basename(browserId.path))}.js">
60 </script>
61 </head>
62 </html>
63 '''));
64 }
65 }
OLDNEW
« no previous file with comments | « README.md ('k') | lib/src/executable.dart » ('j') | lib/src/util/io.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698