OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 polymer.test.build.common; | 5 library polymer.test.build.common; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
9 import 'package:barback/barback.dart'; | 9 import 'package:barback/barback.dart'; |
10 import 'package:stack_trace/stack_trace.dart'; | 10 import 'package:stack_trace/stack_trace.dart'; |
(...skipping 18 matching lines...) Expand all Loading... |
29 final Iterable<String> packages; | 29 final Iterable<String> packages; |
30 final List<String> messages; | 30 final List<String> messages; |
31 int messagesSeen = 0; | 31 int messagesSeen = 0; |
32 bool errorSeen = false; | 32 bool errorSeen = false; |
33 | 33 |
34 Barback barback; | 34 Barback barback; |
35 var errorSubscription; | 35 var errorSubscription; |
36 var resultSubscription; | 36 var resultSubscription; |
37 var logSubscription; | 37 var logSubscription; |
38 | 38 |
39 Future<Asset> getAsset(AssetId id) => | 39 Future<Asset> getAsset(AssetId id) { |
40 new Future.value(new Asset.fromString(id, files[idToString(id)])); | 40 var content = files[idToString(id)]; |
| 41 if (content == null) fail('error: requested $id, but $id is not available'); |
| 42 return new Future.value(new Asset.fromString(id, content)); |
| 43 } |
41 | 44 |
42 TestHelper(List<List<Transformer>> transformers, Map<String, String> files, | 45 TestHelper(List<List<Transformer>> transformers, Map<String, String> files, |
43 this.messages) | 46 this.messages) |
44 : files = files, | 47 : files = files, |
45 packages = files.keys.map((s) => idFromString(s).package) { | 48 packages = files.keys.map((s) => idFromString(s).package) { |
46 barback = new Barback(this); | 49 barback = new Barback(this); |
47 for (var p in packages) { | 50 for (var p in packages) { |
48 barback.updateTransformers(p, transformers); | 51 barback.updateTransformers(p, transformers); |
49 } | 52 } |
50 | 53 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 if (messages == null) return; | 120 if (messages == null) return; |
118 expect(messages.length, messagesSeen, | 121 expect(messages.length, messagesSeen, |
119 reason: 'less messages than expected'); | 122 reason: 'less messages than expected'); |
120 }); | 123 }); |
121 } | 124 } |
122 } | 125 } |
123 | 126 |
124 testPhases(String testName, List<List<Transformer>> phases, | 127 testPhases(String testName, List<List<Transformer>> phases, |
125 Map<String, String> inputFiles, Map<String, String> expectedFiles, | 128 Map<String, String> inputFiles, Map<String, String> expectedFiles, |
126 [List<String> expectedMessages, bool solo = false]) { | 129 [List<String> expectedMessages, bool solo = false]) { |
| 130 |
| 131 // Include mock versions of the polymer library that can be used to test |
| 132 // resolver-based code generation. |
| 133 POLYMER_MOCKS.forEach((file, contents) { inputFiles[file] = contents; }); |
127 (solo ? solo_test : test)(testName, () { | 134 (solo ? solo_test : test)(testName, () { |
128 var helper = new TestHelper(phases, inputFiles, expectedMessages)..run(); | 135 var helper = new TestHelper(phases, inputFiles, expectedMessages)..run(); |
129 return helper.checkAll(expectedFiles).whenComplete(() => helper.tearDown()); | 136 return helper.checkAll(expectedFiles).whenComplete(() => helper.tearDown()); |
130 }); | 137 }); |
131 } | 138 } |
132 | 139 |
133 const WEB_COMPONENTS_TAG = | 140 const WEB_COMPONENTS_TAG = |
134 '<script src="packages/web_components/platform.js"></script>\n' | 141 '<script src="packages/web_components/platform.js"></script>\n' |
135 '<script src="packages/web_components/dart_support.js"></script>\n'; | 142 '<script src="packages/web_components/dart_support.js"></script>\n'; |
136 | 143 |
137 const INTEROP_TAG = '<script src="packages/browser/interop.js"></script>\n'; | 144 const INTEROP_TAG = '<script src="packages/browser/interop.js"></script>\n'; |
138 const DART_JS_TAG = '<script src="packages/browser/dart.js"></script>'; | 145 const DART_JS_TAG = '<script src="packages/browser/dart.js"></script>'; |
139 | 146 |
| 147 const POLYMER_MOCKS = const { |
| 148 'polymer|lib/polymer.dart': |
| 149 'library polymer;\n' |
| 150 'import "dart:html";\n' |
| 151 'export "package:observe/observe.dart";\n' // for @observable |
| 152 'part "src/loader.dart";\n' // for @CustomTag and @initMethod |
| 153 'part "src/instance.dart";\n', // for @published and @ObserveProperty |
| 154 |
| 155 'polymer|lib/src/loader.dart': |
| 156 'part of polymer;\n' |
| 157 'class CustomTag {\n' |
| 158 ' final String tagName;\n' |
| 159 ' const CustomTag(this.tagName);' |
| 160 '}\n' |
| 161 'class InitMethodAnnotation { const InitMethodAnnotation(); }\n' |
| 162 'const initMethod = const InitMethodAnnotation();\n', |
| 163 |
| 164 'polymer|lib/src/instance.dart': |
| 165 'part of polymer;\n' |
| 166 'class PublishedProperty { const PublishedProperty(); }\n' |
| 167 'const published = const PublishedProperty();\n' |
| 168 'class ObserveProperty { const ObserveProperty(); }\n', |
| 169 |
| 170 'polymer|lib/init.dart': |
| 171 'library polymer.init;\n' |
| 172 'import "package:polymer/polymer.dart";\n' |
| 173 'main() {};\n', |
| 174 |
| 175 'observe|lib/observe.dart': |
| 176 'library observe;\n' |
| 177 'export "src/metadata.dart";', |
| 178 |
| 179 'observe|lib/src/metadata.dart': |
| 180 'library observe.src.metadata;\n' |
| 181 'class ObservableProperty { const ObservableProperty(); }\n' |
| 182 'const observable = const ObservableProperty();\n', |
| 183 }; |
OLD | NEW |