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

Side by Side Diff: packages/web_components/test/build/import_inliner_test.dart

Issue 2312183003: Removed Polymer from Observatory deps (Closed)
Patch Set: Created 4 years, 3 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
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 @TestOn('vm')
4 library web_components.test.build.import_inliner_test; 5 library web_components.test.build.import_inliner_test;
5 6
6 import 'package:code_transformers/tests.dart'; 7 import 'package:transformer_test/utils.dart';
7 import 'package:web_components/build/import_inliner.dart'; 8 import 'package:web_components/build/import_inliner.dart';
8 import 'package:web_components/build/messages.dart'; 9 import 'package:web_components/build/messages.dart';
9 import 'package:unittest/compact_vm_config.dart'; 10 import 'package:test/test.dart';
10 import 'package:unittest/unittest.dart';
11 11
12 var transformer = new ImportInlinerTransformer(null, ['{{', '[[']); 12 var transformer = new ImportInlinerTransformer(null, ['{{', '[[']);
13 var phases = [[transformer]]; 13 var phases = [
14 [transformer]
15 ];
14 16
15 main() { 17 main() {
16 useCompactVMConfiguration();
17
18 group('rel=import', importTests); 18 group('rel=import', importTests);
19 group('url attributes', urlAttributeTests); 19 group('url attributes', urlAttributeTests);
20 group('deep entrypoints', entryPointTests); 20 group('deep entrypoints', entryPointTests);
21 // group('templates', templateTests);
21 } 22 }
22 23
23 void importTests() { 24 void importTests() {
24 testPhases('no imports', phases, { 25 testPhases(
25 'a|web/index.html': ''' 26 'no imports',
27 phases,
28 {
29 'a|web/index.html': '''
26 <!DOCTYPE html><html><head></head><body></body></html>''', 30 <!DOCTYPE html><html><head></head><body></body></html>''',
27 }, { 31 },
28 'a|web/index.html': ''' 32 {
33 'a|web/index.html': '''
29 <!DOCTYPE html><html><head></head><body></body></html>''', 34 <!DOCTYPE html><html><head></head><body></body></html>''',
30 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 35 },
36 messages: [],
37 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
31 38
32 testPhases('one import, removes dart script', phases, { 39 testPhases(
33 'a|web/index.html': ''' 40 'one import, removes dart script',
41 phases,
42 {
43 'a|web/index.html': '''
34 <!DOCTYPE html> 44 <!DOCTYPE html>
35 <html> 45 <html>
36 <head><link rel="import" href="packages/a/foo.html"></head> 46 <head><link rel="import" href="packages/a/foo.html"></head>
37 <body></body> 47 <body></body>
38 </html>''', 48 </html>''',
39 'a|lib/foo.html': ''' 49 'a|lib/foo.html': '''
40 <div>hello from foo!</div> 50 <div>hello from foo!</div>
41 <script type="application/dart" src="foo.dart"></script> 51 <script type="application/dart" src="foo.dart"></script>
42 ''', 52 ''',
43 }, { 53 },
44 'a|web/index.html': ''' 54 {
55 'a|web/index.html': '''
45 <!DOCTYPE html> 56 <!DOCTYPE html>
46 <html> 57 <html>
47 <head></head> 58 <head></head>
48 <body> 59 <body>
49 <div hidden=""> 60 <div hidden="">
50 <div>hello from foo!</div> 61 <div>hello from foo!</div>
51 </div> 62 </div>
52 </body> 63 </body>
53 </html>''', 64 </html>''',
54 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 65 },
66 messages: [],
67 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
55 68
56 testPhases('preserves order of scripts', phases, { 69 testPhases(
57 'a|web/index.html': ''' 70 'preserves order of scripts',
71 phases,
72 {
73 'a|web/index.html': '''
58 <!DOCTYPE html><html><head> 74 <!DOCTYPE html><html><head>
59 <script type="text/javascript">/*first*/</script> 75 <script type="text/javascript">/*first*/</script>
60 <script src="second.js"></script> 76 <script src="second.js"></script>
61 <link rel="import" href="packages/a/foo.html"> 77 <link rel="import" href="packages/a/foo.html">
62 <script>/*forth*/</script> 78 <script>/*forth*/</script>
63 </head></html>''', 79 </head></html>''',
64 'a|lib/foo.html': ''' 80 'a|lib/foo.html': '''
65 <!DOCTYPE html><html><head><script>/*third*/</script> 81 <!DOCTYPE html><html><head><script>/*third*/</script>
66 </head><body><polymer-element>2</polymer-element></html>''', 82 </head><body><polymer-element>2</polymer-element></html>''',
67 'a|web/second.js': '/*second*/' 83 'a|web/second.js': '/*second*/'
68 }, { 84 },
69 'a|web/index.html': ''' 85 {
86 'a|web/index.html': '''
70 <!DOCTYPE html><html><head> 87 <!DOCTYPE html><html><head>
71 <script type="text/javascript">/*first*/</script> 88 <script type="text/javascript">/*first*/</script>
72 <script src="second.js"></script> 89 <script src="second.js"></script>
73 </head><body> 90 </head><body>
74 <div hidden=""> 91 <div hidden="">
75 <script>/*third*/</script> 92 <script>/*third*/</script>
76 <polymer-element>2</polymer-element> 93 <polymer-element>2</polymer-element>
77 <script>/*forth*/</script> 94 <script>/*forth*/</script>
78 </div> 95 </div>
79 </body></html>''', 96 </body></html>''',
80 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 97 },
98 messages: [],
99 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
81 100
82 testPhases('preserves order of scripts, extract Dart scripts', phases, { 101 testPhases(
83 'a|web/index.html': ''' 102 'preserves order of scripts, extract Dart scripts',
103 phases,
104 {
105 'a|web/index.html': '''
84 <!DOCTYPE html> 106 <!DOCTYPE html>
85 <html> 107 <html>
86 <head> 108 <head>
87 <script type="text/javascript">/*first*/</script> 109 <script type="text/javascript">/*first*/</script>
88 <script src="second.js"></script> 110 <script src="second.js"></script>
89 <link rel="import" href="test2.html"> 111 <link rel="import" href="test2.html">
90 <script type="application/dart">/*fifth*/</script> 112 <script type="application/dart">/*fifth*/</script>
91 </head> 113 </head>
92 </html>''', 114 </html>''',
93 'a|web/test2.html': ''' 115 'a|web/test2.html': '''
94 <!DOCTYPE html> 116 <!DOCTYPE html>
95 <html> 117 <html>
96 <head> 118 <head>
97 <script>/*third*/</script> 119 <script>/*third*/</script>
98 <script type="application/dart">/*forth*/</script> 120 <script type="application/dart">/*forth*/</script>
99 </head> 121 </head>
100 <body> 122 <body>
101 <polymer-element>2</polymer-element> 123 <polymer-element>2</polymer-element>
102 </body> 124 </body>
103 </html>''', 125 </html>''',
104 'a|web/second.js': '/*second*/' 126 'a|web/second.js': '/*second*/'
105 }, { 127 },
106 'a|web/index.html': ''' 128 {
129 'a|web/index.html': '''
107 <!DOCTYPE html> 130 <!DOCTYPE html>
108 <html> 131 <html>
109 <head> 132 <head>
110 <script type="text/javascript">/*first*/</script> 133 <script type="text/javascript">/*first*/</script>
111 <script src="second.js"></script> 134 <script src="second.js"></script>
112 </head> 135 </head>
113 <body> 136 <body>
114 <div hidden=""> 137 <div hidden="">
115 <script>/*third*/</script> 138 <script>/*third*/</script>
116 <polymer-element>2</polymer-element> 139 <polymer-element>2</polymer-element>
117 <script type="application/dart">/*fifth*/</script> 140 <script type="application/dart">/*fifth*/</script>
118 </div> 141 </div>
119 </body> 142 </body>
120 </html>''', 143 </html>''',
121 'a|web/test2.html': ''' 144 'a|web/test2.html': '''
122 <!DOCTYPE html> 145 <!DOCTYPE html>
123 <html> 146 <html>
124 <head> 147 <head>
125 <script>/*third*/</script> 148 <script>/*third*/</script>
126 <script type="application/dart">/*forth*/</script> 149 <script type="application/dart">/*forth*/</script>
127 </head> 150 </head>
128 <body> 151 <body>
129 <polymer-element>2</polymer-element> 152 <polymer-element>2</polymer-element>
130 </body> 153 </body>
131 </html>''', 154 </html>''',
132 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 155 },
156 messages: [],
157 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
133 158
134 testPhases('no transformation outside web/', phases, { 159 testPhases(
135 'a|lib/test.html': ''' 160 'no transformation outside web/',
161 phases,
162 {
163 'a|lib/test.html': '''
136 <!DOCTYPE html><html><head> 164 <!DOCTYPE html><html><head>
137 <link rel="import" href="test2.html"> 165 <link rel="import" href="test2.html">
138 </head></html>''', 166 </head></html>''',
139 'a|lib/test2.html': ''' 167 'a|lib/test2.html': '''
140 <!DOCTYPE html><html><head> 168 <!DOCTYPE html><html><head>
141 </head><body><polymer-element>2</polymer-element></html>''', 169 </head><body><polymer-element>2</polymer-element></html>''',
142 }, { 170 },
143 'a|lib/test.html': ''' 171 {
172 'a|lib/test.html': '''
144 <!DOCTYPE html><html><head> 173 <!DOCTYPE html><html><head>
145 <link rel="import" href="test2.html"> 174 <link rel="import" href="test2.html">
146 </head></html>''', 175 </head></html>''',
147 'a|lib/test2.html': ''' 176 'a|lib/test2.html': '''
148 <!DOCTYPE html><html><head> 177 <!DOCTYPE html><html><head>
149 </head><body><polymer-element>2</polymer-element></html>''', 178 </head><body><polymer-element>2</polymer-element></html>''',
150 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 179 },
180 messages: [],
181 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
151 182
152 testPhases('shallow, elements, many', phases, { 183 testPhases(
153 'a|web/test.html': ''' 184 'shallow, elements, many',
185 phases,
186 {
187 'a|web/test.html': '''
154 <!DOCTYPE html><html><head> 188 <!DOCTYPE html><html><head>
155 <link rel="import" href="test2.html"> 189 <link rel="import" href="test2.html">
156 <link rel="import" href="test3.html"> 190 <link rel="import" href="test3.html">
157 </head></html>''', 191 </head></html>''',
158 'a|web/test2.html': ''' 192 'a|web/test2.html': '''
159 <!DOCTYPE html><html><head> 193 <!DOCTYPE html><html><head>
160 </head><body><polymer-element>2</polymer-element></html>''', 194 </head><body><polymer-element>2</polymer-element></html>''',
161 'a|web/test3.html': ''' 195 'a|web/test3.html': '''
162 <!DOCTYPE html><html><head> 196 <!DOCTYPE html><html><head>
163 </head><body><polymer-element>3</polymer-element></html>''', 197 </head><body><polymer-element>3</polymer-element></html>''',
164 }, { 198 },
165 'a|web/test.html': ''' 199 {
200 'a|web/test.html': '''
166 <!DOCTYPE html><html><head> 201 <!DOCTYPE html><html><head>
167 </head><body> 202 </head><body>
168 <div hidden=""> 203 <div hidden="">
169 <polymer-element>2</polymer-element> 204 <polymer-element>2</polymer-element>
170 <polymer-element>3</polymer-element> 205 <polymer-element>3</polymer-element>
171 </div> 206 </div>
172 </body></html>''', 207 </body></html>''',
173 'a|web/test2.html': ''' 208 'a|web/test2.html': '''
174 <!DOCTYPE html><html><head> 209 <!DOCTYPE html><html><head>
175 </head><body><polymer-element>2</polymer-element></html>''', 210 </head><body><polymer-element>2</polymer-element></html>''',
176 'a|web/test3.html': ''' 211 'a|web/test3.html': '''
177 <!DOCTYPE html><html><head> 212 <!DOCTYPE html><html><head>
178 </head><body><polymer-element>3</polymer-element></html>''', 213 </head><body><polymer-element>3</polymer-element></html>''',
179 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 214 },
215 messages: [],
216 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
180 217
181 testPhases('deep, elements, one per file', phases, { 218 testPhases(
182 'a|web/test.html': ''' 219 'deep, elements, one per file',
220 phases,
221 {
222 'a|web/test.html': '''
183 <!DOCTYPE html><html><head> 223 <!DOCTYPE html><html><head>
184 <link rel="import" href="test2.html"> 224 <link rel="import" href="test2.html">
185 </head></html>''', 225 </head></html>''',
186 'a|web/test2.html': ''' 226 'a|web/test2.html': '''
187 <!DOCTYPE html><html><head> 227 <!DOCTYPE html><html><head>
188 <link rel="import" href="assets/b/test3.html"> 228 <link rel="import" href="assets/b/test3.html">
189 </head><body><polymer-element>2</polymer-element></html>''', 229 </head><body><polymer-element>2</polymer-element></html>''',
190 'b|asset/test3.html': ''' 230 'b|asset/test3.html': '''
191 <!DOCTYPE html><html><head> 231 <!DOCTYPE html><html><head>
192 <link rel="import" href="../../packages/c/test4.html"> 232 <link rel="import" href="../../packages/c/test4.html">
193 </head><body><polymer-element>3</polymer-element></html>''', 233 </head><body><polymer-element>3</polymer-element></html>''',
194 'c|lib/test4.html': ''' 234 'c|lib/test4.html': '''
195 <!DOCTYPE html><html><head> 235 <!DOCTYPE html><html><head>
196 </head><body><polymer-element>4</polymer-element></html>''', 236 </head><body><polymer-element>4</polymer-element></html>''',
197 }, { 237 },
198 'a|web/test.html': ''' 238 {
239 'a|web/test.html': '''
199 <!DOCTYPE html><html><head> 240 <!DOCTYPE html><html><head>
200 </head><body> 241 </head><body>
201 <div hidden=""> 242 <div hidden="">
202 <polymer-element>4</polymer-element> 243 <polymer-element>4</polymer-element>
203 <polymer-element>3</polymer-element> 244 <polymer-element>3</polymer-element>
204 <polymer-element>2</polymer-element> 245 <polymer-element>2</polymer-element>
205 </div> 246 </div>
206 </body></html>''', 247 </body></html>''',
207 'a|web/test2.html': ''' 248 'a|web/test2.html': '''
208 <!DOCTYPE html><html><head> 249 <!DOCTYPE html><html><head>
209 </head><body> 250 </head><body>
210 <div hidden=""> 251 <div hidden="">
211 <polymer-element>4</polymer-element> 252 <polymer-element>4</polymer-element>
212 <polymer-element>3</polymer-element> 253 <polymer-element>3</polymer-element>
213 </div> 254 </div>
214 <polymer-element>2</polymer-element> 255 <polymer-element>2</polymer-element>
215 </body></html>''', 256 </body></html>''',
216 'b|asset/test3.html': ''' 257 'b|asset/test3.html': '''
217 <!DOCTYPE html><html><head> 258 <!DOCTYPE html><html><head>
218 <link rel="import" href="../../packages/c/test4.html"> 259 <link rel="import" href="../../packages/c/test4.html">
219 </head><body><polymer-element>3</polymer-element></html>''', 260 </head><body><polymer-element>3</polymer-element></html>''',
220 'c|lib/test4.html': ''' 261 'c|lib/test4.html': '''
221 <!DOCTYPE html><html><head> 262 <!DOCTYPE html><html><head>
222 </head><body><polymer-element>4</polymer-element></html>''', 263 </head><body><polymer-element>4</polymer-element></html>''',
223 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 264 },
265 messages: [],
266 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
224 267
225 testPhases('deep, elements, many imports', phases, { 268 testPhases(
226 'a|web/test.html': ''' 269 'deep, elements, many imports',
270 phases,
271 {
272 'a|web/test.html': '''
227 <!DOCTYPE html><html><head> 273 <!DOCTYPE html><html><head>
228 <link rel="import" href="test2a.html"> 274 <link rel="import" href="test2a.html">
229 <link rel="import" href="test2b.html"> 275 <link rel="import" href="test2b.html">
230 </head></html>''', 276 </head></html>''',
231 'a|web/test2a.html': ''' 277 'a|web/test2a.html': '''
232 <!DOCTYPE html><html><head> 278 <!DOCTYPE html><html><head>
233 <link rel="import" href="test3a.html"> 279 <link rel="import" href="test3a.html">
234 <link rel="import" href="test3b.html"> 280 <link rel="import" href="test3b.html">
235 </head><body><polymer-element>2a</polymer-element></body></html>''', 281 </head><body><polymer-element>2a</polymer-element></body></html>''',
236 'a|web/test2b.html': ''' 282 'a|web/test2b.html': '''
237 <!DOCTYPE html><html><head> 283 <!DOCTYPE html><html><head>
238 <link rel="import" href="test4a.html"> 284 <link rel="import" href="test4a.html">
239 <link rel="import" href="test4b.html"> 285 <link rel="import" href="test4b.html">
240 </head><body><polymer-element>2b</polymer-element></body></html>''', 286 </head><body><polymer-element>2b</polymer-element></body></html>''',
241 'a|web/test3a.html': ''' 287 'a|web/test3a.html': '''
242 <!DOCTYPE html><html><head> 288 <!DOCTYPE html><html><head>
243 </head><body><polymer-element>3a</polymer-element></body></html>''', 289 </head><body><polymer-element>3a</polymer-element></body></html>''',
244 'a|web/test3b.html': ''' 290 'a|web/test3b.html': '''
245 <!DOCTYPE html><html><head> 291 <!DOCTYPE html><html><head>
246 </head><body><polymer-element>3b</polymer-element></body></html>''', 292 </head><body><polymer-element>3b</polymer-element></body></html>''',
247 'a|web/test4a.html': ''' 293 'a|web/test4a.html': '''
248 <!DOCTYPE html><html><head> 294 <!DOCTYPE html><html><head>
249 </head><body><polymer-element>4a</polymer-element></body></html>''', 295 </head><body><polymer-element>4a</polymer-element></body></html>''',
250 'a|web/test4b.html': ''' 296 'a|web/test4b.html': '''
251 <!DOCTYPE html><html><head> 297 <!DOCTYPE html><html><head>
252 </head><body><polymer-element>4b</polymer-element></body></html>''', 298 </head><body><polymer-element>4b</polymer-element></body></html>''',
253 }, { 299 },
254 'a|web/test.html': ''' 300 {
301 'a|web/test.html': '''
255 <!DOCTYPE html><html><head> 302 <!DOCTYPE html><html><head>
256 </head><body> 303 </head><body>
257 <div hidden=""> 304 <div hidden="">
258 <polymer-element>3a</polymer-element> 305 <polymer-element>3a</polymer-element>
259 <polymer-element>3b</polymer-element> 306 <polymer-element>3b</polymer-element>
260 <polymer-element>2a</polymer-element> 307 <polymer-element>2a</polymer-element>
261 <polymer-element>4a</polymer-element> 308 <polymer-element>4a</polymer-element>
262 <polymer-element>4b</polymer-element> 309 <polymer-element>4b</polymer-element>
263 <polymer-element>2b</polymer-element> 310 <polymer-element>2b</polymer-element>
264 </div> 311 </div>
265 </body></html>''', 312 </body></html>''',
266 'a|web/test2a.html': ''' 313 'a|web/test2a.html': '''
267 <!DOCTYPE html><html><head> 314 <!DOCTYPE html><html><head>
268 </head><body> 315 </head><body>
269 <div hidden=""> 316 <div hidden="">
270 <polymer-element>3a</polymer-element> 317 <polymer-element>3a</polymer-element>
271 <polymer-element>3b</polymer-element> 318 <polymer-element>3b</polymer-element>
272 </div> 319 </div>
273 <polymer-element>2a</polymer-element> 320 <polymer-element>2a</polymer-element>
274 </body></html>''', 321 </body></html>''',
275 'a|web/test2b.html': ''' 322 'a|web/test2b.html': '''
276 <!DOCTYPE html><html><head> 323 <!DOCTYPE html><html><head>
277 </head><body> 324 </head><body>
278 <div hidden=""> 325 <div hidden="">
279 <polymer-element>4a</polymer-element> 326 <polymer-element>4a</polymer-element>
280 <polymer-element>4b</polymer-element> 327 <polymer-element>4b</polymer-element>
281 </div> 328 </div>
282 <polymer-element>2b</polymer-element> 329 <polymer-element>2b</polymer-element>
283 </body></html>''', 330 </body></html>''',
284 'a|web/test3a.html': ''' 331 'a|web/test3a.html': '''
285 <!DOCTYPE html><html><head> 332 <!DOCTYPE html><html><head>
286 </head><body> 333 </head><body>
287 <polymer-element>3a</polymer-element> 334 <polymer-element>3a</polymer-element>
288 </body></html>''', 335 </body></html>''',
289 'a|web/test3b.html': ''' 336 'a|web/test3b.html': '''
290 <!DOCTYPE html><html><head> 337 <!DOCTYPE html><html><head>
291 </head><body> 338 </head><body>
292 <polymer-element>3b</polymer-element> 339 <polymer-element>3b</polymer-element>
293 </body></html>''', 340 </body></html>''',
294 'a|web/test4a.html': ''' 341 'a|web/test4a.html': '''
295 <!DOCTYPE html><html><head> 342 <!DOCTYPE html><html><head>
296 </head><body> 343 </head><body>
297 <polymer-element>4a</polymer-element> 344 <polymer-element>4a</polymer-element>
298 </body></html>''', 345 </body></html>''',
299 'a|web/test4b.html': ''' 346 'a|web/test4b.html': '''
300 <!DOCTYPE html><html><head> 347 <!DOCTYPE html><html><head>
301 </head><body> 348 </head><body>
302 <polymer-element>4b</polymer-element> 349 <polymer-element>4b</polymer-element>
303 </body></html>''', 350 </body></html>''',
304 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 351 },
352 messages: [],
353 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
305 354
306 testPhases('imports cycle, 1-step lasso', phases, { 355 testPhases(
307 'a|web/test.html': ''' 356 'imports cycle, 1-step lasso',
357 phases,
358 {
359 'a|web/test.html': '''
308 <!DOCTYPE html><html><head> 360 <!DOCTYPE html><html><head>
309 <link rel="import" href="test_1.html"> 361 <link rel="import" href="test_1.html">
310 </head></html>''', 362 </head></html>''',
311 'a|web/test_1.html': ''' 363 'a|web/test_1.html': '''
312 <!DOCTYPE html><html><head> 364 <!DOCTYPE html><html><head>
313 <link rel="import" href="test_2.html"> 365 <link rel="import" href="test_2.html">
314 </head><body><polymer-element>1</polymer-element></html>''', 366 </head><body><polymer-element>1</polymer-element></html>''',
315 'a|web/test_2.html': ''' 367 'a|web/test_2.html': '''
316 <!DOCTYPE html><html><head> 368 <!DOCTYPE html><html><head>
317 <link rel="import" href="test_1.html"> 369 <link rel="import" href="test_1.html">
318 </head><body><polymer-element>2</polymer-element></html>''', 370 </head><body><polymer-element>2</polymer-element></html>''',
319 }, { 371 },
320 'a|web/test.html': ''' 372 {
373 'a|web/test.html': '''
321 <!DOCTYPE html><html><head> 374 <!DOCTYPE html><html><head>
322 </head><body> 375 </head><body>
323 <div hidden=""> 376 <div hidden="">
324 <polymer-element>2</polymer-element> 377 <polymer-element>2</polymer-element>
325 <polymer-element>1</polymer-element> 378 <polymer-element>1</polymer-element>
326 </div> 379 </div>
327 </body></html>''', 380 </body></html>''',
328 'a|web/test_1.html': ''' 381 'a|web/test_1.html': '''
329 <!DOCTYPE html><html><head> 382 <!DOCTYPE html><html><head>
330 </head><body> 383 </head><body>
331 <div hidden=""> 384 <div hidden="">
332 <polymer-element>2</polymer-element> 385 <polymer-element>2</polymer-element>
333 </div> 386 </div>
334 <polymer-element>1</polymer-element></body></html>''', 387 <polymer-element>1</polymer-element></body></html>''',
335 'a|web/test_2.html': ''' 388 'a|web/test_2.html': '''
336 <!DOCTYPE html><html><head> 389 <!DOCTYPE html><html><head>
337 </head><body> 390 </head><body>
338 <div hidden=""> 391 <div hidden="">
339 <polymer-element>1</polymer-element> 392 <polymer-element>1</polymer-element>
340 </div> 393 </div>
341 <polymer-element>2</polymer-element></body></html>''', 394 <polymer-element>2</polymer-element></body></html>''',
342 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 395 },
396 messages: [],
397 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
343 398
344 testPhases('imports cycle, 1-step lasso, scripts too', phases, { 399 testPhases(
345 'a|web/test.html': ''' 400 'imports cycle, 1-step lasso, scripts too',
401 phases,
402 {
403 'a|web/test.html': '''
346 <!DOCTYPE html><html><head> 404 <!DOCTYPE html><html><head>
347 <link rel="import" href="test_1.html"> 405 <link rel="import" href="test_1.html">
348 </head></html>''', 406 </head></html>''',
349 'a|web/test_1.html': ''' 407 'a|web/test_1.html': '''
350 <!DOCTYPE html><html><head> 408 <!DOCTYPE html><html><head>
351 <link rel="import" href="test_2.html"> 409 <link rel="import" href="test_2.html">
352 </head><body><polymer-element>1</polymer-element> 410 </head><body><polymer-element>1</polymer-element>
353 <script src="s1"></script></html>''', 411 <script src="s1"></script></html>''',
354 'a|web/test_2.html': ''' 412 'a|web/test_2.html': '''
355 <!DOCTYPE html><html><head> 413 <!DOCTYPE html><html><head>
356 <link rel="import" href="test_1.html"> 414 <link rel="import" href="test_1.html">
357 </head><body><polymer-element>2</polymer-element> 415 </head><body><polymer-element>2</polymer-element>
358 <script src="s2"></script></html>''', 416 <script src="s2"></script></html>''',
359 }, { 417 },
360 'a|web/test.html': ''' 418 {
419 'a|web/test.html': '''
361 <!DOCTYPE html><html><head> 420 <!DOCTYPE html><html><head>
362 </head><body> 421 </head><body>
363 <div hidden=""> 422 <div hidden="">
364 <polymer-element>2</polymer-element> 423 <polymer-element>2</polymer-element>
365 <script src="s2"></script> 424 <script src="s2"></script>
366 <polymer-element>1</polymer-element> 425 <polymer-element>1</polymer-element>
367 <script src="s1"></script> 426 <script src="s1"></script>
368 </div> 427 </div>
369 </body></html>''', 428 </body></html>''',
370 'a|web/test_1.html': ''' 429 'a|web/test_1.html': '''
371 <!DOCTYPE html><html><head> 430 <!DOCTYPE html><html><head>
372 </head><body> 431 </head><body>
373 <div hidden=""> 432 <div hidden="">
374 <polymer-element>2</polymer-element> 433 <polymer-element>2</polymer-element>
375 <script src="s2"></script> 434 <script src="s2"></script>
376 </div> 435 </div>
377 <polymer-element>1</polymer-element> 436 <polymer-element>1</polymer-element>
378 <script src="s1"></script></body></html>''', 437 <script src="s1"></script></body></html>''',
379 'a|web/test_2.html': ''' 438 'a|web/test_2.html': '''
380 <!DOCTYPE html><html><head> 439 <!DOCTYPE html><html><head>
381 </head><body> 440 </head><body>
382 <div hidden=""> 441 <div hidden="">
383 <polymer-element>1</polymer-element> 442 <polymer-element>1</polymer-element>
384 <script src="s1"></script> 443 <script src="s1"></script>
385 </div> 444 </div>
386 <polymer-element>2</polymer-element> 445 <polymer-element>2</polymer-element>
387 <script src="s2"></script></body></html>''', 446 <script src="s2"></script></body></html>''',
388 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 447 },
448 messages: [],
449 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
389 450
390 testPhases('imports cycle, 1-step lasso, Dart scripts too', phases, { 451 testPhases(
391 'a|web/test.html': ''' 452 'imports cycle, 1-step lasso, Dart scripts too',
453 phases,
454 {
455 'a|web/test.html': '''
392 <!DOCTYPE html><html><head> 456 <!DOCTYPE html><html><head>
393 <link rel="import" href="test_1.html"> 457 <link rel="import" href="test_1.html">
394 </head></html>''', 458 </head></html>''',
395 'a|web/test_1.html': ''' 459 'a|web/test_1.html': '''
396 <!DOCTYPE html><html><head> 460 <!DOCTYPE html><html><head>
397 <link rel="import" href="test_2.html"> 461 <link rel="import" href="test_2.html">
398 </head><body><polymer-element>1</polymer-element> 462 </head><body><polymer-element>1</polymer-element>
399 <script type="application/dart" src="s1.dart"></script> 463 <script type="application/dart" src="s1.dart"></script>
400 </html>''', 464 </html>''',
401 'a|web/test_2.html': ''' 465 'a|web/test_2.html': '''
402 <!DOCTYPE html><html><head> 466 <!DOCTYPE html><html><head>
403 <link rel="import" href="test_1.html"> 467 <link rel="import" href="test_1.html">
404 </head><body><polymer-element>2 468 </head><body><polymer-element>2
405 <script type="application/dart" src="s2.dart"></script> 469 <script type="application/dart" src="s2.dart"></script>
406 </polymer-element> 470 </polymer-element>
407 </html>''', 471 </html>''',
408 'a|web/s1.dart': '', 472 'a|web/s1.dart': '',
409 'a|web/s2.dart': '', 473 'a|web/s2.dart': '',
410 }, { 474 },
411 'a|web/test.html': ''' 475 {
476 'a|web/test.html': '''
412 <!DOCTYPE html><html><head> 477 <!DOCTYPE html><html><head>
413 </head><body> 478 </head><body>
414 <div hidden=""> 479 <div hidden="">
415 <polymer-element>2</polymer-element> 480 <polymer-element>2</polymer-element>
416 <polymer-element>1</polymer-element> 481 <polymer-element>1</polymer-element>
417 </div> 482 </div>
418 </body></html>''', 483 </body></html>''',
419 'a|web/test_1.html': ''' 484 'a|web/test_1.html': '''
420 <!DOCTYPE html><html><head> 485 <!DOCTYPE html><html><head>
421 </head><body> 486 </head><body>
422 <div hidden=""> 487 <div hidden="">
423 <polymer-element>2</polymer-element> 488 <polymer-element>2</polymer-element>
424 </div> 489 </div>
425 <polymer-element>1</polymer-element> 490 <polymer-element>1</polymer-element>
426 <script type="application/dart" src="s1.dart"></script> 491 <script type="application/dart" src="s1.dart"></script>
427 </body></html>''', 492 </body></html>''',
428 'a|web/test_2.html': ''' 493 'a|web/test_2.html': '''
429 <!DOCTYPE html><html><head> 494 <!DOCTYPE html><html><head>
430 </head><body> 495 </head><body>
431 <div hidden=""> 496 <div hidden="">
432 <polymer-element>1</polymer-element> 497 <polymer-element>1</polymer-element>
433 </div> 498 </div>
434 <polymer-element>2 499 <polymer-element>2
435 <script type="application/dart" src="s2.dart"></script> 500 <script type="application/dart" src="s2.dart"></script>
436 </polymer-element> 501 </polymer-element>
437 </body></html>''', 502 </body></html>''',
438 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 503 },
504 messages: [],
505 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
439 506
440 testPhases('imports with Dart script after JS script', phases, { 507 testPhases(
441 'a|web/test.html': ''' 508 'imports with Dart script after JS script',
509 phases,
510 {
511 'a|web/test.html': '''
442 <!DOCTYPE html><html><head> 512 <!DOCTYPE html><html><head>
443 <link rel="import" href="test_1.html"> 513 <link rel="import" href="test_1.html">
444 </head></html>''', 514 </head></html>''',
445 'a|web/test_1.html': ''' 515 'a|web/test_1.html': '''
446 <!DOCTYPE html><html><head> 516 <!DOCTYPE html><html><head>
447 <link rel="import" href="test_1.html"> 517 <link rel="import" href="test_1.html">
448 </head><body> 518 </head><body>
449 <foo>42</foo><bar-baz></bar-baz> 519 <foo>42</foo><bar-baz></bar-baz>
450 <polymer-element>1' 520 <polymer-element>1'
451 <script src="s1.js"></script> 521 <script src="s1.js"></script>
452 <script type="application/dart" src="s1.dart"></script> 522 <script type="application/dart" src="s1.dart"></script>
453 </polymer-element> 523 </polymer-element>
454 'FOO'</body></html>''', 524 'FOO'</body></html>''',
455 'a|web/s1.dart': '', 525 'a|web/s1.dart': '',
456 }, { 526 },
457 'a|web/test.html': ''' 527 {
528 'a|web/test.html': '''
458 <!DOCTYPE html><html><head> 529 <!DOCTYPE html><html><head>
459 </head><body> 530 </head><body>
460 <div hidden=""> 531 <div hidden="">
461 <foo>42</foo><bar-baz></bar-baz> 532 <foo>42</foo><bar-baz></bar-baz>
462 <polymer-element>1' 533 <polymer-element>1'
463 <script src="s1.js"></script> 534 <script src="s1.js"></script>
464 </polymer-element> 535 </polymer-element>
465 'FOO' 536 'FOO'
466 </div> 537 </div>
467 </body></html>''', 538 </body></html>''',
468 'a|web/test_1.html': ''' 539 'a|web/test_1.html': '''
469 <!DOCTYPE html><html><head> 540 <!DOCTYPE html><html><head>
470 </head><body> 541 </head><body>
471 <foo>42</foo><bar-baz></bar-baz> 542 <foo>42</foo><bar-baz></bar-baz>
472 <polymer-element>1' 543 <polymer-element>1'
473 <script src="s1.js"></script> 544 <script src="s1.js"></script>
474 <script type="application/dart" src="s1.dart"></script> 545 <script type="application/dart" src="s1.dart"></script>
475 </polymer-element> 546 </polymer-element>
476 'FOO'</body></html>''', 547 'FOO'</body></html>''',
477 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 548 },
549 messages: [],
550 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
478 551
479 testPhases('imports cycle, 2-step lasso', phases, { 552 testPhases(
480 'a|web/test.html': ''' 553 'imports cycle, 2-step lasso',
554 phases,
555 {
556 'a|web/test.html': '''
481 <!DOCTYPE html><html><head> 557 <!DOCTYPE html><html><head>
482 <link rel="import" href="test_1.html"> 558 <link rel="import" href="test_1.html">
483 </head></html>''', 559 </head></html>''',
484 'a|web/test_1.html': ''' 560 'a|web/test_1.html': '''
485 <!DOCTYPE html><html><head> 561 <!DOCTYPE html><html><head>
486 <link rel="import" href="test_2.html"> 562 <link rel="import" href="test_2.html">
487 </head><body><polymer-element>1</polymer-element></html>''', 563 </head><body><polymer-element>1</polymer-element></html>''',
488 'a|web/test_2.html': ''' 564 'a|web/test_2.html': '''
489 <!DOCTYPE html><html><head> 565 <!DOCTYPE html><html><head>
490 <link rel="import" href="test_3.html"> 566 <link rel="import" href="test_3.html">
491 </head><body><polymer-element>2</polymer-element></html>''', 567 </head><body><polymer-element>2</polymer-element></html>''',
492 'a|web/test_3.html': ''' 568 'a|web/test_3.html': '''
493 <!DOCTYPE html><html><head> 569 <!DOCTYPE html><html><head>
494 <link rel="import" href="test_1.html"> 570 <link rel="import" href="test_1.html">
495 </head><body><polymer-element>3</polymer-element></html>''', 571 </head><body><polymer-element>3</polymer-element></html>''',
496 }, { 572 },
497 'a|web/test.html': ''' 573 {
574 'a|web/test.html': '''
498 <!DOCTYPE html><html><head> 575 <!DOCTYPE html><html><head>
499 </head><body> 576 </head><body>
500 <div hidden=""> 577 <div hidden="">
501 <polymer-element>3</polymer-element> 578 <polymer-element>3</polymer-element>
502 <polymer-element>2</polymer-element> 579 <polymer-element>2</polymer-element>
503 <polymer-element>1</polymer-element> 580 <polymer-element>1</polymer-element>
504 </div> 581 </div>
505 </body></html>''', 582 </body></html>''',
506 'a|web/test_1.html': ''' 583 'a|web/test_1.html': '''
507 <!DOCTYPE html><html><head> 584 <!DOCTYPE html><html><head>
508 </head><body> 585 </head><body>
509 <div hidden=""> 586 <div hidden="">
510 <polymer-element>3</polymer-element> 587 <polymer-element>3</polymer-element>
511 <polymer-element>2</polymer-element> 588 <polymer-element>2</polymer-element>
512 </div> 589 </div>
513 <polymer-element>1</polymer-element></body></html>''', 590 <polymer-element>1</polymer-element></body></html>''',
514 'a|web/test_2.html': ''' 591 'a|web/test_2.html': '''
515 <!DOCTYPE html><html><head> 592 <!DOCTYPE html><html><head>
516 </head><body> 593 </head><body>
517 <div hidden=""> 594 <div hidden="">
518 <polymer-element>1</polymer-element> 595 <polymer-element>1</polymer-element>
519 <polymer-element>3</polymer-element> 596 <polymer-element>3</polymer-element>
520 </div> 597 </div>
521 <polymer-element>2</polymer-element></body></html>''', 598 <polymer-element>2</polymer-element></body></html>''',
522 'a|web/test_3.html': ''' 599 'a|web/test_3.html': '''
523 <!DOCTYPE html><html><head> 600 <!DOCTYPE html><html><head>
524 </head><body> 601 </head><body>
525 <div hidden=""> 602 <div hidden="">
526 <polymer-element>2</polymer-element> 603 <polymer-element>2</polymer-element>
527 <polymer-element>1</polymer-element> 604 <polymer-element>1</polymer-element>
528 </div> 605 </div>
529 <polymer-element>3</polymer-element></body></html>''', 606 <polymer-element>3</polymer-element></body></html>''',
530 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 607 },
608 messages: [],
609 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
531 610
532 testPhases('imports cycle, self cycle', phases, { 611 testPhases(
533 'a|web/test.html': ''' 612 'imports cycle, self cycle',
613 phases,
614 {
615 'a|web/test.html': '''
534 <!DOCTYPE html><html><head> 616 <!DOCTYPE html><html><head>
535 <link rel="import" href="test_1.html"> 617 <link rel="import" href="test_1.html">
536 </head></html>''', 618 </head></html>''',
537 'a|web/test_1.html': ''' 619 'a|web/test_1.html': '''
538 <!DOCTYPE html><html><head> 620 <!DOCTYPE html><html><head>
539 <link rel="import" href="test_1.html"> 621 <link rel="import" href="test_1.html">
540 </head><body><polymer-element>1</polymer-element></html>''', 622 </head><body><polymer-element>1</polymer-element></html>''',
541 }, { 623 },
542 'a|web/test.html': ''' 624 {
625 'a|web/test.html': '''
543 <!DOCTYPE html><html><head> 626 <!DOCTYPE html><html><head>
544 </head><body> 627 </head><body>
545 <div hidden=""> 628 <div hidden="">
546 <polymer-element>1</polymer-element> 629 <polymer-element>1</polymer-element>
547 </div> 630 </div>
548 </body></html>''', 631 </body></html>''',
549 'a|web/test_1.html': ''' 632 'a|web/test_1.html': '''
550 <!DOCTYPE html><html><head> 633 <!DOCTYPE html><html><head>
551 </head><body> 634 </head><body>
552 <polymer-element>1</polymer-element></body></html>''', 635 <polymer-element>1</polymer-element></body></html>''',
553 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 636 },
637 messages: [],
638 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
554 639
555 testPhases('imports DAG', phases, { 640 testPhases(
556 'a|web/test.html': ''' 641 'imports DAG',
642 phases,
643 {
644 'a|web/test.html': '''
557 <!DOCTYPE html><html><head> 645 <!DOCTYPE html><html><head>
558 <link rel="import" href="test_1.html"> 646 <link rel="import" href="test_1.html">
559 <link rel="import" href="test_2.html"> 647 <link rel="import" href="test_2.html">
560 </head></html>''', 648 </head></html>''',
561 'a|web/test_1.html': ''' 649 'a|web/test_1.html': '''
562 <!DOCTYPE html><html><head> 650 <!DOCTYPE html><html><head>
563 <link rel="import" href="test_3.html"> 651 <link rel="import" href="test_3.html">
564 </head><body><polymer-element>1</polymer-element></body></html>''', 652 </head><body><polymer-element>1</polymer-element></body></html>''',
565 'a|web/test_2.html': ''' 653 'a|web/test_2.html': '''
566 <!DOCTYPE html><html><head> 654 <!DOCTYPE html><html><head>
567 <link rel="import" href="test_3.html"> 655 <link rel="import" href="test_3.html">
568 </head><body><polymer-element>2</polymer-element></body></html>''', 656 </head><body><polymer-element>2</polymer-element></body></html>''',
569 'a|web/test_3.html': ''' 657 'a|web/test_3.html': '''
570 <!DOCTYPE html><html><head> 658 <!DOCTYPE html><html><head>
571 </head><body><polymer-element>3</polymer-element></body></html>''', 659 </head><body><polymer-element>3</polymer-element></body></html>''',
572 }, { 660 },
573 'a|web/test.html': ''' 661 {
662 'a|web/test.html': '''
574 <!DOCTYPE html><html><head> 663 <!DOCTYPE html><html><head>
575 </head><body> 664 </head><body>
576 <div hidden=""> 665 <div hidden="">
577 <polymer-element>3</polymer-element> 666 <polymer-element>3</polymer-element>
578 <polymer-element>1</polymer-element> 667 <polymer-element>1</polymer-element>
579 <polymer-element>2</polymer-element> 668 <polymer-element>2</polymer-element>
580 </div> 669 </div>
581 </body></html>''', 670 </body></html>''',
582 'a|web/test_1.html': ''' 671 'a|web/test_1.html': '''
583 <!DOCTYPE html><html><head> 672 <!DOCTYPE html><html><head>
584 </head><body> 673 </head><body>
585 <div hidden=""> 674 <div hidden="">
586 <polymer-element>3</polymer-element> 675 <polymer-element>3</polymer-element>
587 </div> 676 </div>
588 <polymer-element>1</polymer-element></body></html>''', 677 <polymer-element>1</polymer-element></body></html>''',
589 'a|web/test_2.html': ''' 678 'a|web/test_2.html': '''
590 <!DOCTYPE html><html><head> 679 <!DOCTYPE html><html><head>
591 </head><body> 680 </head><body>
592 <div hidden=""> 681 <div hidden="">
593 <polymer-element>3</polymer-element> 682 <polymer-element>3</polymer-element>
594 </div> 683 </div>
595 <polymer-element>2</polymer-element></body></html>''', 684 <polymer-element>2</polymer-element></body></html>''',
596 'a|web/test_3.html': ''' 685 'a|web/test_3.html': '''
597 <!DOCTYPE html><html><head> 686 <!DOCTYPE html><html><head>
598 </head><body> 687 </head><body>
599 <polymer-element>3</polymer-element></body></html>''', 688 <polymer-element>3</polymer-element></body></html>''',
600 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 689 },
601 690 messages: [],
602 testPhases('missing html imports throw errors', phases, { 691 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
603 'a|web/test.html': ''' 692
693 testPhases(
694 'missing html imports throw errors',
695 phases,
696 {
697 'a|web/test.html': '''
604 <!DOCTYPE html><html><head> 698 <!DOCTYPE html><html><head>
605 <link rel="import" href="foo.html"> 699 <link rel="import" href="foo.html">
606 </head></html>''', 700 </head></html>''',
607 }, {}, [ 701 },
608 'warning: ${inlineImportFail.create({ 702 {},
703 messages: [
704 'warning: ${inlineImportFail.create({
609 'error': 'Could not find asset a|web/foo.html.' 705 'error': 'Could not find asset a|web/foo.html.'
610 }).snippet} ' 706 }).snippet} '
611 '(web/test.html 1 8)', 707 '(web/test.html 1 8)',
612 ], StringFormatter.noNewlinesOrSurroundingWhitespace); 708 ],
613 709 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
614 testPhases('absolute uri', phases, { 710
615 'a|web/test.html': ''' 711 testPhases(
712 'absolute uri',
713 phases,
714 {
715 'a|web/test.html': '''
616 <!DOCTYPE html><html><head> 716 <!DOCTYPE html><html><head>
617 <link rel="stylesheet" href="/foo.css"> 717 <link rel="stylesheet" href="/foo.css">
618 </head></html>''', 718 </head></html>''',
619 'a|web/test2.html': ''' 719 'a|web/test2.html': '''
620 <!DOCTYPE html><html><head> 720 <!DOCTYPE html><html><head>
621 <link rel="stylesheet" href="http://example.com/bar.css"> 721 <link rel="stylesheet" href="http:example.com/bar.css">
622 </head></html>''', 722 </head></html>''',
623 }, { 723 },
624 'a|web/test.html': ''' 724 {
725 'a|web/test.html': '''
625 <!DOCTYPE html><html><head> 726 <!DOCTYPE html><html><head>
626 <link rel="stylesheet" href="/foo.css"> 727 <link rel="stylesheet" href="/foo.css">
627 </head></html>''', 728 </head></html>''',
628 'a|web/test2.html': ''' 729 'a|web/test2.html': '''
629 <!DOCTYPE html><html><head> 730 <!DOCTYPE html><html><head>
630 <link rel="stylesheet" href="http://example.com/bar.css"> 731 <link rel="stylesheet" href="http:example.com/bar.css">
631 </head></html>''', 732 </head></html>''',
632 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 733 },
734 messages: [],
735 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
633 } 736 }
634 737
635 void urlAttributeTests() { 738 void urlAttributeTests() {
636 testPhases('url attributes are normalized', phases, { 739 testPhases(
637 'a|web/test.html': ''' 740 'url attributes are normalized',
741 phases,
742 {
743 'a|web/test.html': '''
638 <!DOCTYPE html><html><head> 744 <!DOCTYPE html><html><head>
639 <link rel="import" href="foo/test_1.html"> 745 <link rel="import" href="foo/test_1.html">
640 <link rel="import" href="foo/test_2.html"> 746 <link rel="import" href="foo/test_2.html">
641 </head></html>''', 747 </head></html>''',
642 'a|web/foo/test_1.html': ''' 748 'a|web/foo/test_1.html': '''
643 <script src="baz.jpg"></script>''', 749 <script src="baz.jpg"></script>''',
644 'a|web/foo/test_2.html': ''' 750 'a|web/foo/test_2.html': '''
645 <foo-element src="baz.jpg"></foo-element>''', 751 <foo-element src="baz.jpg"></foo-element>''',
646 }, { 752 },
647 'a|web/test.html': ''' 753 {
754 'a|web/test.html': '''
648 <!DOCTYPE html><html><head></head><body> 755 <!DOCTYPE html><html><head></head><body>
649 <div hidden=""> 756 <div hidden="">
650 <script src="foo/baz.jpg"></script> 757 <script src="foo/baz.jpg"></script>
651 <foo-element src="baz.jpg"></foo-element> 758 <foo-element src="baz.jpg"></foo-element>
652 </div> 759 </div>
653 </body></html>''', 760 </body></html>''',
654 'a|web/foo/test_1.html': ''' 761 'a|web/foo/test_1.html': '''
655 <script src="baz.jpg"></script>''', 762 <script src="baz.jpg"></script>''',
656 'a|web/foo/test_2.html': ''' 763 'a|web/foo/test_2.html': '''
657 <foo-element src="baz.jpg"></foo-element>''', 764 <foo-element src="baz.jpg"></foo-element>''',
658 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 765 },
659 766 messages: [],
660 testPhases('paths with an invalid prefix are not normalized', phases, { 767 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
661 'a|web/test.html': ''' 768
769 testPhases(
770 'paths with an invalid prefix are not normalized',
771 phases,
772 {
773 'a|web/test.html': '''
662 <!DOCTYPE html><html><head> 774 <!DOCTYPE html><html><head>
663 <link rel="import" href="packages/a/test.html"> 775 <link rel="import" href="packages/a/test.html">
664 </head></html>''', 776 </head></html>''',
665 'a|lib/test.html': ''' 777 'a|lib/test.html': '''
666 <img src="[[bar]]">''', 778 <img src="[[bar]]">''',
667 }, { 779 },
668 'a|web/test.html': ''' 780 {
781 'a|web/test.html': '''
669 <!DOCTYPE html><html><head></head><body> 782 <!DOCTYPE html><html><head></head><body>
670 <div hidden=""> 783 <div hidden="">
671 <img src="[[bar]]"> 784 <img src="[[bar]]">
672 </div> 785 </div>
673 </body></html>''', 786 </body></html>''',
674 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 787 },
675 788 messages: [],
676 testPhases('relative paths followed by invalid characters are normalized', 789 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
677 phases, { 790
678 'a|web/test.html': ''' 791 testPhases(
792 'relative paths followed by invalid characters are normalized',
793 phases,
794 {
795 'a|web/test.html': '''
679 <!DOCTYPE html><html><head> 796 <!DOCTYPE html><html><head>
680 <link rel="import" href="foo/test.html"> 797 <link rel="import" href="foo/test.html">
681 </head></html>''', 798 </head></html>''',
682 'a|web/foo/test.html': ''' 799 'a|web/foo/test.html': '''
683 <img src="baz/{{bar}}"> 800 <img src="baz/{{bar}}">
684 <img src="./{{bar}}">''', 801 <img src="./{{bar}}">''',
685 }, { 802 },
686 'a|web/test.html': ''' 803 {
804 'a|web/test.html': '''
687 <!DOCTYPE html><html><head></head><body> 805 <!DOCTYPE html><html><head></head><body>
688 <div hidden=""> 806 <div hidden="">
689 <img src="foo/baz/{{bar}}"> 807 <img src="foo/baz/{{bar}}">
690 <img src="foo/{{bar}}"> 808 <img src="foo/{{bar}}">
691 </div> 809 </div>
692 </body></html>''', 810 </body></html>''',
693 }, null, StringFormatter.noNewlinesOrSurroundingWhitespace); 811 },
694 812 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
695 testPhases('relative paths in _* attributes are normalized', phases, { 813
696 'a|web/test.html': ''' 814 testPhases(
815 'relative paths in _* attributes are normalized',
816 phases,
817 {
818 'a|web/test.html': '''
697 <!DOCTYPE html><html><head> 819 <!DOCTYPE html><html><head>
698 <link rel="import" href="foo/test.html"> 820 <link rel="import" href="foo/test.html">
699 </head></html>''', 821 </head></html>''',
700 'a|web/foo/test.html': ''' 822 'a|web/foo/test.html': '''
701 <img _src="./{{bar}}"> 823 <img _src="./{{bar}}">
702 <a _href="./{{bar}}">test</a>''', 824 <a _href="./{{bar}}">test</a>''',
703 }, { 825 },
704 'a|web/test.html': ''' 826 {
827 'a|web/test.html': '''
705 <!DOCTYPE html><html><head></head><body> 828 <!DOCTYPE html><html><head></head><body>
706 <div hidden=""> 829 <div hidden="">
707 <img _src="foo/{{bar}}"> 830 <img _src="foo/{{bar}}">
708 <a _href="foo/{{bar}}">test</a> 831 <a _href="foo/{{bar}}">test</a>
709 </div> 832 </div>
710 </body></html>''', 833 </body></html>''',
711 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 834 },
712 835 messages: [],
713 testPhases('paths starting with a binding are treated as absolute', phases, { 836 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
714 'a|web/test.html': ''' 837
838 testPhases(
839 'paths starting with a binding are treated as absolute',
840 phases,
841 {
842 'a|web/test.html': '''
715 <!DOCTYPE html><html><head> 843 <!DOCTYPE html><html><head>
716 <link rel="import" href="packages/a/foo.html"> 844 <link rel="import" href="packages/a/foo.html">
717 </head></html>''', 845 </head></html>''',
718 'a|lib/foo.html': ''' 846 'a|lib/foo.html': '''
719 <img _src="{{bar}}"> 847 <img _src="{{bar}}">
720 <img _src="[[bar]]">''', 848 <img _src="[[bar]]">''',
721 }, { 849 },
722 'a|web/test.html': ''' 850 {
851 'a|web/test.html': '''
723 <!DOCTYPE html><html><head></head><body> 852 <!DOCTYPE html><html><head></head><body>
724 <div hidden=""> 853 <div hidden="">
725 <img _src="{{bar}}"> 854 <img _src="{{bar}}">
726 <img _src="[[bar]]"> 855 <img _src="[[bar]]">
727 </div> 856 </div>
728 </body></html>''', 857 </body></html>''',
729 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 858 },
730 859 messages: [],
731 testPhases('arbitrary bindings can exist in paths', phases, { 860 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
732 'a|web/test.html': ''' 861
862 testPhases(
863 'arbitrary bindings can exist in paths',
864 phases,
865 {
866 'a|web/test.html': '''
733 <!DOCTYPE html><html><head></head><body> 867 <!DOCTYPE html><html><head></head><body>
734 <img src="./{{(bar[2] + baz[\'foo\']) * 14 / foobar() - 0.5}}.jpg"> 868 <img src="./{{(bar[2] + baz[\'foo\']) * 14 / foobar() - 0.5}}.jpg">
735 <img src="./[[bar[2]]].jpg"> 869 <img src="./[[bar[2]]].jpg">
736 </body></html>''', 870 </body></html>''',
737 }, { 871 },
738 'a|web/test.html': ''' 872 {
873 'a|web/test.html': '''
739 <!DOCTYPE html><html><head></head><body> 874 <!DOCTYPE html><html><head></head><body>
740 <img src="{{(bar[2] + baz[\'foo\']) * 14 / foobar() - 0.5}}.jpg"> 875 <img src="{{(bar[2] + baz[\'foo\']) * 14 / foobar() - 0.5}}.jpg">
741 <img src="[[bar[2]]].jpg"> 876 <img src="[[bar[2]]].jpg">
742 </body></html>''', 877 </body></html>''',
743 }, null, StringFormatter.noNewlinesOrSurroundingWhitespace); 878 },
744 879 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
745 testPhases('multiple bindings can exist in paths', phases, { 880
746 'a|web/test.html': ''' 881 testPhases(
882 'multiple bindings can exist in paths',
883 phases,
884 {
885 'a|web/test.html': '''
747 <!DOCTYPE html><html><head></head><body> 886 <!DOCTYPE html><html><head></head><body>
748 <img src="./{{bar[0]}}/{{baz[1]}}.{{extension}}"> 887 <img src="./{{bar[0]}}/{{baz[1]}}.{{extension}}">
749 </body></html>''', 888 </body></html>''',
750 }, { 889 },
751 'a|web/test.html': ''' 890 {
891 'a|web/test.html': '''
752 <!DOCTYPE html><html><head></head><body> 892 <!DOCTYPE html><html><head></head><body>
753 <img src="{{bar[0]}}/{{baz[1]}}.{{extension}}"> 893 <img src="{{bar[0]}}/{{baz[1]}}.{{extension}}">
754 </body></html>''', 894 </body></html>''',
755 }, null, StringFormatter.noNewlinesOrSurroundingWhitespace); 895 },
756 896 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
757 testPhases('relative paths in deep imports', phases, { 897
758 'a|web/test.html': ''' 898 testPhases(
899 'relative paths in deep imports',
900 phases,
901 {
902 'a|web/test.html': '''
759 <!DOCTYPE html><html><head> 903 <!DOCTYPE html><html><head>
760 <link rel="import" href="foo/foo.html"> 904 <link rel="import" href="foo/foo.html">
761 </head></html>''', 905 </head></html>''',
762 'a|web/foo/foo.html': ''' 906 'a|web/foo/foo.html': '''
763 <link rel="import" href="bar.html">''', 907 <link rel="import" href="bar.html">''',
764 'a|web/foo/bar.html': ''' 908 'a|web/foo/bar.html': '''
765 <style rel="stylesheet" href="baz.css"></style> 909 <style rel="stylesheet" href="baz.css"></style>
766 <style rel="stylesheet" href="../css/zap.css"></style>''', 910 <style rel="stylesheet" href="../css/zap.css"></style>''',
767 'a|web/foo/baz.css': '', 911 'a|web/foo/baz.css': '',
768 'a|web/css/zap.css': '', 912 'a|web/css/zap.css': '',
769 }, { 913 },
770 'a|web/test.html': ''' 914 {
915 'a|web/test.html': '''
771 <!DOCTYPE html><html><head></head><body> 916 <!DOCTYPE html><html><head></head><body>
772 <div hidden=""> 917 <div hidden="">
773 <style rel="stylesheet" href="foo/baz.css"></style> 918 <style rel="stylesheet" href="foo/baz.css"></style>
774 <style rel="stylesheet" href="css/zap.css"></style> 919 <style rel="stylesheet" href="css/zap.css"></style>
775 </div> 920 </div>
776 </body></html>''', 921 </body></html>''',
777 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 922 },
923 messages: [],
924 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
778 } 925 }
779 926
780 void entryPointTests() { 927 void entryPointTests() {
781 testPhases('one level deep entry points normalize correctly', phases, { 928 testPhases(
782 'a|web/test/test.html': ''' 929 'one level deep entry points normalize correctly',
930 phases,
931 {
932 'a|web/test/test.html': '''
783 <!DOCTYPE html><html><head> 933 <!DOCTYPE html><html><head>
784 <link rel="import" href="../../packages/a/foo/foo.html"> 934 <link rel="import" href="../../packages/a/foo/foo.html">
785 </head></html>''', 935 </head></html>''',
786 'a|lib/foo/foo.html': ''' 936 'a|lib/foo/foo.html': '''
787 <script rel="import" href="../../../packages/b/bar/bar.js"> 937 <script rel="import" href="../../../packages/b/bar/bar.js">
788 </script>''', 938 </script>''',
789 'b|lib/bar/bar.js': ''' 939 'b|lib/bar/bar.js': '''
790 console.log("here");''', 940 console.log("here");''',
791 }, { 941 },
792 'a|web/test/test.html': ''' 942 {
943 'a|web/test/test.html': '''
793 <!DOCTYPE html><html><head></head><body> 944 <!DOCTYPE html><html><head></head><body>
794 <div hidden=""> 945 <div hidden="">
795 <script rel="import" href="../packages/b/bar/bar.js"></script> 946 <script rel="import" href="../packages/b/bar/bar.js"></script>
796 </div> 947 </div>
797 </body></html>''', 948 </body></html>''',
798 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 949 },
799 950 messages: [],
800 testPhases('includes in entry points normalize correctly', phases, { 951 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
801 'a|web/test/test.html': ''' 952
953 testPhases(
954 'includes in entry points normalize correctly',
955 phases,
956 {
957 'a|web/test/test.html': '''
802 <!DOCTYPE html><html><head> 958 <!DOCTYPE html><html><head>
803 <script src="packages/a/foo/bar.js"></script> 959 <script src="packages/a/foo/bar.js"></script>
804 </head></html>''', 960 </head></html>''',
805 'a|lib/foo/bar.js': ''' 961 'a|lib/foo/bar.js': '''
806 console.log("here");''', 962 console.log("here");''',
807 }, { 963 },
808 'a|web/test/test.html': ''' 964 {
965 'a|web/test/test.html': '''
809 <!DOCTYPE html><html><head> 966 <!DOCTYPE html><html><head>
810 <script src="../packages/a/foo/bar.js"></script> 967 <script src="../packages/a/foo/bar.js"></script>
811 </head><body> 968 </head><body>
812 </body></html>''', 969 </body></html>''',
813 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 970 },
814 971 messages: [],
815 testPhases('two level deep entry points normalize correctly', phases, { 972 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
816 'a|web/test/well/test.html': ''' 973
974 testPhases(
975 'two level deep entry points normalize correctly',
976 phases,
977 {
978 'a|web/test/well/test.html': '''
817 <!DOCTYPE html><html><head> 979 <!DOCTYPE html><html><head>
818 <link rel="import" href="../../../packages/a/foo/foo.html"> 980 <link rel="import" href="../../../packages/a/foo/foo.html">
819 </head></html>''', 981 </head></html>''',
820 'a|lib/foo/foo.html': ''' 982 'a|lib/foo/foo.html': '''
821 <script rel="import" href="../../../packages/b/bar/bar.js"></script>''', 983 <script rel="import" href="../../../packages/b/bar/bar.js"></script>''',
822 'b|lib/bar/bar.js': ''' 984 'b|lib/bar/bar.js': '''
823 console.log("here");''', 985 console.log("here");''',
824 }, { 986 },
825 'a|web/test/well/test.html': ''' 987 {
988 'a|web/test/well/test.html': '''
826 <!DOCTYPE html><html><head></head><body> 989 <!DOCTYPE html><html><head></head><body>
827 <div hidden=""> 990 <div hidden="">
828 <script rel="import" href="../../packages/b/bar/bar.js"></script> 991 <script rel="import" href="../../packages/b/bar/bar.js"></script>
829 </div> 992 </div>
830 </body></html>''', 993 </body></html>''',
831 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 994 },
995 messages: [],
996 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
832 } 997 }
998
999 // void templateTests() {
1000 // testPhases('allows template inside table', phases, {
1001 // 'a|web/index.html': '''
1002 // <!DOCTYPE html>
1003 // <html>
1004 // <head><link rel="import" href="packages/a/foo.html"></head>
1005 // <body>
1006 // <dom-module id="hello-element">
1007 // <template>
1008 // <table>
1009 // <thead>
1010 // <tr><th>first</th><th>last</th></tr>
1011 // </thead>
1012 // <tbody>
1013 // <template is="dom-repeat" items="{{data}}">
1014 // <tr>
1015 // <td>{{item.first}}</td>
1016 // <td>{{item.last}}</td>
1017 // </tr>
1018 // </template>
1019 // </tbody>
1020 // </table>
1021 // </template>
1022 // </dom-module>
1023 // </body>
1024 // </html>''',
1025 // 'a|lib/foo.html': '''
1026 // <div>hello!</div>
1027 // ''',
1028 // }, {
1029 // 'a|web/index.html': '''
1030 // <!DOCTYPE html>
1031 // <html>
1032 // <head></head>
1033 // <body>
1034 // <div hidden="">
1035 // <div>hello!</div>
1036 // </div>
1037 // <dom-module id="hello-element">
1038 // <template>
1039 // <table>
1040 // <thead>
1041 // <tr><th>first</th><th>last</th></tr>
1042 // </thead>
1043 // <tbody>
1044 // <template is="dom-repeat" items="{{data}}">
1045 // <tr>
1046 // <td>{{item.first}}</td>
1047 // <td>{{item.last}}</td>
1048 // </tr>
1049 // </template>
1050 // </tbody>
1051 // </table>
1052 // </template>
1053 // </dom-module>
1054 // </body>
1055 // </html>''',
1056 // }, messages: [], formatter: StringFormatter.noNewlinesOrSurroundingWhitespa ce);
1057 // }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698