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

Side by Side Diff: packages/web_components/test/build/script_compactor_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.script_compactor_test; 5 library web_components.test.build.script_compactor_test;
5 6
6 import 'package:code_transformers/tests.dart'; 7 import 'package:transformer_test/utils.dart';
7 import 'package:web_components/build/messages.dart'; 8 import 'package:web_components/build/messages.dart';
8 import 'package:web_components/build/script_compactor.dart'; 9 import 'package:web_components/build/script_compactor.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 ScriptCompactorTransformer(); 12 var transformer = new ScriptCompactorTransformer();
13 var phases = [[transformer]]; 13 var phases = [
14 [transformer]
15 ];
14 16
15 main() { 17 main() {
16 useCompactVMConfiguration();
17
18 group('basic', basicTests); 18 group('basic', basicTests);
19 group('code extraction tests', codeExtractorTests); 19 group('code extraction tests', codeExtractorTests);
20 group('fixes import/export/part URIs', dartUriTests); 20 group('fixes import/export/part URIs', dartUriTests);
21 group('validates script-tag URIs', validateUriTests); 21 group('validates script-tag URIs', validateUriTests);
22 } 22 }
23 23
24 void basicTests() { 24 void basicTests() {
25 testPhases('single script', phases, { 25 testPhases(
26 'a|web/index.html': ''' 26 'single script',
27 phases,
28 {
29 'a|web/index.html': '''
27 <!DOCTYPE html><html><head></head><body> 30 <!DOCTYPE html><html><head></head><body>
28 <script type="application/dart" src="index.dart"></script> 31 <script type="application/dart" src="index.dart"></script>
29 </body></html>''', 32 </body></html>''',
30 'a|web/index.dart': ''' 33 'a|web/index.dart': '''
31 library a.index; 34 library a.index;
32 main(){}''', 35 main(){}''',
33 }, { 36 },
34 'a|web/index.html': ''' 37 {
38 'a|web/index.html': '''
35 <!DOCTYPE html><html><head></head><body> 39 <!DOCTYPE html><html><head></head><body>
36 <script type="application/dart" src="index.bootstrap.dart"></script> 40 <script type="application/dart" src="index.bootstrap.dart"></script>
37 </body></html>''', 41 </body></html>''',
38 'a|web/index.bootstrap.dart': ''' 42 'a|web/index.bootstrap.dart': '''
39 library a.web.index_bootstrap_dart; 43 library a.web.index_bootstrap_dart;
40 44
41 import 'index.dart' as i0; 45 import 'index.dart' as i0;
42 46
43 main() => i0.main();''', 47 main() => i0.main();''',
44 'a|web/index.dart': ''' 48 'a|web/index.dart': '''
45 library a.index; 49 library a.index;
46 main(){}''', 50 main(){}''',
47 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 51 },
52 messages: [],
53 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
48 54
49 testPhases('multiple scripts from nested html import', phases, { 55 testPhases(
50 'a|web/index.html': ''' 56 'multiple scripts from nested html import',
57 phases,
58 {
59 'a|web/index.html': '''
51 <!DOCTYPE html><html> 60 <!DOCTYPE html><html>
52 <head> 61 <head>
53 <link rel="import" href="packages/b/a.html"> 62 <link rel="import" href="packages/b/a.html">
54 </head> 63 </head>
55 <body> 64 <body>
56 <script type="application/dart" src="index.dart"></script> 65 <script type="application/dart" src="index.dart"></script>
57 </body> 66 </body>
58 </body></html>''', 67 </body></html>''',
59 'a|web/index.dart': ''' 68 'a|web/index.dart': '''
60 library a.index; 69 library a.index;
61 main(){}''', 70 main(){}''',
62 'b|lib/a.html': ''' 71 'b|lib/a.html': '''
63 <link rel="import" href="b/b.html"> 72 <link rel="import" href="b/b.html">
64 <link rel="import" href="../../packages/c/c.html"> 73 <link rel="import" href="../../packages/c/c.html">
65 <script type="application/dart" src="a.dart"></script>''', 74 <script type="application/dart" src="a.dart"></script>''',
66 'b|lib/b/b.html': '<script type="application/dart" src="b.dart"></script>', 75 'b|lib/b/b.html':
67 'b|lib/a.dart': 'library b.a;', 76 '<script type="application/dart" src="b.dart"></script>',
68 'b|lib/b/b.dart': 'library b.b.b;', 77 'b|lib/a.dart': 'library b.a;',
69 'c|lib/c.html': '<script type="application/dart" src="c.dart"></script>', 78 'b|lib/b/b.dart': 'library b.b.b;',
70 'c|lib/c.dart': 'library c.c;', 79 'c|lib/c.html':
71 }, { 80 '<script type="application/dart" src="c.dart"></script>',
72 'a|web/index.html': ''' 81 'c|lib/c.dart': 'library c.c;',
82 },
83 {
84 'a|web/index.html': '''
73 <!DOCTYPE html><html> 85 <!DOCTYPE html><html>
74 <head> 86 <head>
75 <link rel="import" href="packages/b/a.html"> 87 <link rel="import" href="packages/b/a.html">
76 </head> 88 </head>
77 <body> 89 <body>
78 <script type="application/dart" src="index.bootstrap.dart"></script> 90 <script type="application/dart" src="index.bootstrap.dart"></script>
79 </body></html>''', 91 </body></html>''',
80 'a|web/index.bootstrap.dart': ''' 92 'a|web/index.bootstrap.dart': '''
81 library a.web.index_bootstrap_dart; 93 library a.web.index_bootstrap_dart;
82 94
83 import 'package:b/b/b.dart' as i0; 95 import 'package:b/b/b.dart' as i0;
84 import 'package:c/c.dart' as i1; 96 import 'package:c/c.dart' as i1;
85 import 'package:b/a.dart' as i2; 97 import 'package:b/a.dart' as i2;
86 import 'index.dart' as i3; 98 import 'index.dart' as i3;
87 99
88 main() => i3.main();''', 100 main() => i3.main();''',
89 'b|lib/a.html': ''' 101 'b|lib/a.html': '''
90 <link rel="import" href="b/b.html"> 102 <link rel="import" href="b/b.html">
91 <link rel="import" href="../../packages/c/c.html"> 103 <link rel="import" href="../../packages/c/c.html">
92 <script type="application/dart" src="a.dart"></script>''', 104 <script type="application/dart" src="a.dart"></script>''',
93 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 105 },
106 messages: [],
107 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
94 108
95 testPhases('inline scripts', phases, { 109 testPhases(
96 'a|web/index.html': ''' 110 'inline scripts',
111 phases,
112 {
113 'a|web/index.html': '''
97 <!DOCTYPE html> 114 <!DOCTYPE html>
98 <html> 115 <html>
99 <head> 116 <head>
100 <link rel="import" href="packages/a/foo.html"> 117 <link rel="import" href="packages/a/foo.html">
101 </head> 118 </head>
102 <body> 119 <body>
103 <script type="application/dart"> 120 <script type="application/dart">
104 library a.index; 121 library a.index;
105 main(){} 122 main(){}
106 </script> 123 </script>
107 </body> 124 </body>
108 </html>''', 125 </html>''',
109 'a|lib/foo.html': ''' 126 'a|lib/foo.html': '''
110 <script type="application/dart"> 127 <script type="application/dart">
111 library a.foo; 128 library a.foo;
112 129
113 import 'bar.dart'; 130 import 'bar.dart';
114 </script>''', 131 </script>''',
115 }, { 132 },
116 'a|web/index.html': ''' 133 {
134 'a|web/index.html': '''
117 <!DOCTYPE html> 135 <!DOCTYPE html>
118 <html> 136 <html>
119 <head> 137 <head>
120 <link rel="import" href="packages/a/foo.html"> 138 <link rel="import" href="packages/a/foo.html">
121 </head> 139 </head>
122 <body> 140 <body>
123 <script type="application/dart" src="index.bootstrap.dart"></script> 141 <script type="application/dart" src="index.bootstrap.dart"></script>
124 </body> 142 </body>
125 </html>''', 143 </html>''',
126 'a|web/index.html.1.dart': ''' 144 'a|web/index.html.1.dart': '''
127 library a.index; 145 library a.index;
128 main(){}''', 146 main(){}''',
129 'a|web/index.html.0.dart': ''' 147 'a|web/index.html.0.dart': '''
130 library a.foo; 148 library a.foo;
131 149
132 import 'package:a/bar.dart';''', 150 import 'package:a/bar.dart';''',
133 'a|web/index.bootstrap.dart': ''' 151 'a|web/index.bootstrap.dart': '''
134 library a.web.index_bootstrap_dart; 152 library a.web.index_bootstrap_dart;
135 153
136 import 'index.html.0.dart' as i0; 154 import 'index.html.0.dart' as i0;
137 import 'index.html.1.dart' as i1; 155 import 'index.html.1.dart' as i1;
138 156
139 main() => i1.main();''', 157 main() => i1.main();''',
140 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 158 },
141 159 messages: [],
142 testPhases('Cleans library names generated from file paths.', phases, { 160 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
143 'a|web/01_test.html': ''' 161
162 testPhases(
163 'Cleans library names generated from file paths.',
164 phases,
165 {
166 'a|web/01_test.html': '''
144 <!DOCTYPE html><html><head> 167 <!DOCTYPE html><html><head>
145 <script type="application/dart">/*1*/</script> 168 <script type="application/dart">/*1*/</script>
146 </head></html>''', 169 </head></html>''',
147 'a|web/foo_02_test.html': ''' 170 'a|web/foo_02_test.html': '''
148 <!DOCTYPE html><html><head> 171 <!DOCTYPE html><html><head>
149 <script type="application/dart">/*2*/</script> 172 <script type="application/dart">/*2*/</script>
150 </head></html>''', 173 </head></html>''',
151 'a|web/test_03.html': ''' 174 'a|web/test_03.html': '''
152 <!DOCTYPE html><html><head> 175 <!DOCTYPE html><html><head>
153 <script type="application/dart">/*3*/</script> 176 <script type="application/dart">/*3*/</script>
154 </head></html>''', 177 </head></html>''',
155 'a|web/*test_%foo_04!.html': ''' 178 'a|web/*test_%foo_04!.html': '''
156 <!DOCTYPE html><html><head> 179 <!DOCTYPE html><html><head>
157 <script type="application/dart">/*4*/</script> 180 <script type="application/dart">/*4*/</script>
158 </head></html>''', 181 </head></html>''',
159 'a|web/%05_test.html': ''' 182 'a|web/%05_test.html': '''
160 <!DOCTYPE html><html><head> 183 <!DOCTYPE html><html><head>
161 <script type="application/dart">/*5*/</script> 184 <script type="application/dart">/*5*/</script>
162 </head></html>''', 185 </head></html>''',
163 }, { 186 },
164 // Appends an _ if it starts with a number. 187 {
165 'a|web/01_test.html.0.dart': 'library a.web._01_test_html_0;\n/*1*/', 188 // Appends an _ if it starts with a number.
166 // Allows numbers in the middle. 189 'a|web/01_test.html.0.dart': 'library a.web._01_test_html_0;\n/*1*/',
167 'a|web/foo_02_test.html.0.dart': 'library a.web.foo_02_test_html_0;\n/*2*/', 190 // Allows numbers in the middle.
168 // Allows numbers at the end. 191 'a|web/foo_02_test.html.0.dart':
169 'a|web/test_03.html.0.dart': 'library a.web.test_03_html_0;\n/*3*/', 192 'library a.web.foo_02_test_html_0;\n/*2*/',
170 // Replaces invalid characters with _. 193 // Allows numbers at the end.
171 'a|web/*test_%foo_04!.html.0.dart': 194 'a|web/test_03.html.0.dart': 'library a.web.test_03_html_0;\n/*3*/',
172 'library a.web._test__foo_04__html_0;\n/*4*/', 195 // Replaces invalid characters with _.
173 // Replace invalid character followed by number. 196 'a|web/*test_%foo_04!.html.0.dart':
174 'a|web/%05_test.html.0.dart': 'library a.web._05_test_html_0;\n/*5*/', 197 'library a.web._test__foo_04__html_0;\n/*4*/',
175 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 198 // Replace invalid character followed by number.
199 'a|web/%05_test.html.0.dart': 'library a.web._05_test_html_0;\n/*5*/',
200 },
201 messages: [],
202 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
203
204 testPhases(
205 'file names with hyphens are ok',
206 phases,
207 {
208 'a|web/a-b.html': '''
209 <!DOCTYPE html><html><head></head><body>
210 <script type="application/dart" src="a-b.dart"></script>
211 </body></html>''',
212 'a|web/a-b.dart': '''
213 library a.a_b;
214 main(){}''',
215 },
216 {
217 'a|web/a-b.html': '''
218 <!DOCTYPE html><html><head></head><body>
219 <script type="application/dart" src="a-b.bootstrap.dart"></script>
220 </body></html>''',
221 'a|web/a-b.bootstrap.dart': '''
222 library a.web.a_b_bootstrap_dart;
223
224 import 'a-b.dart' as i0;
225
226 main() => i0.main();''',
227 'a|web/a-b.dart': '''
228 library a.a_b;
229 main(){}''',
230 },
231 messages: [],
232 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
233
234 testPhases(
235 'package names with hyphens give an error',
236 phases,
237 {
238 'a-b|web/a.html': '''
239 <!DOCTYPE html><html><head></head><body>
240 <script type="application/dart" src="a.dart"></script>
241 </body></html>''',
242 'a-b|web/a.dart': '''
243 library a.a;
244 main(){}''',
245 },
246 {},
247 messages: [
248 'error: Invalid package name `a-b`. Package names should be '
249 'valid dart identifiers, as indicated at '
250 'https://www.dartlang.org/tools/pub/pubspec.html#name.'
251 ],
252 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
253
254 testPhases(
255 'package names that start with a period are not allowed',
256 phases,
257 {
258 '.a|web/a.html': '''
259 <!DOCTYPE html><html><head></head><body>
260 <script type="application/dart" src="a.dart"></script>
261 </body></html>''',
262 '.a|web/a.dart': '''
263 library a.a;
264 main(){}''',
265 },
266 {},
267 messages: [
268 'error: Invalid package name `.a`. Package names should be '
269 'valid dart identifiers, as indicated at '
270 'https://www.dartlang.org/tools/pub/pubspec.html#name.'
271 ],
272 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
273
274 testPhases(
275 'package names that end with a period are not allowed',
276 phases,
277 {
278 'a.|web/a.html': '''
279 <!DOCTYPE html><html><head></head><body>
280 <script type="application/dart" src="a.dart"></script>
281 </body></html>''',
282 'a.|web/a.dart': '''
283 library a.a;
284 main(){}''',
285 },
286 {},
287 messages: [
288 'error: Invalid package name `a.`. Package names should be '
289 'valid dart identifiers, as indicated at '
290 'https://www.dartlang.org/tools/pub/pubspec.html#name.'
291 ],
292 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
293
294 testPhases(
295 'package names with double periods are not allowed',
296 phases,
297 {
298 'a..b|web/a.html': '''
299 <!DOCTYPE html><html><head></head><body>
300 <script type="application/dart" src="a.dart"></script>
301 </body></html>''',
302 'a..b|web/a.dart': '''
303 library a.a;
304 main(){}''',
305 },
306 {},
307 messages: [
308 'error: Invalid package name `a..b`. Package names should be '
309 'valid dart identifiers, as indicated at '
310 'https://www.dartlang.org/tools/pub/pubspec.html#name.'
311 ],
312 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
313
314 testPhases(
315 'package names with internal periods are allowed',
316 phases,
317 {
318 'a.b|web/a.html': '''
319 <!DOCTYPE html><html><head></head><body>
320 <script type="application/dart" src="a.dart"></script>
321 </body></html>''',
322 'a.b|web/a.dart': '''
323 library a.b.a;
324 main(){}''',
325 },
326 {
327 'a.b|web/a.bootstrap.dart': '''
328 library a.b.web.a_bootstrap_dart;
329
330 import 'a.dart' as i0;
331
332 main() => i0.main();''',
333 },
334 messages: [],
335 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
176 } 336 }
177 337
178 void codeExtractorTests() { 338 void codeExtractorTests() {
179 testPhases('no dart script', phases, { 339 testPhases('no dart script', phases,
180 'a|web/test.html': '<!DOCTYPE html><html></html>', 340 {'a|web/test.html': '<!DOCTYPE html><html></html>',}, {},
181 }, {}, [ 341 messages: [
182 'error: Found either zero or multiple dart scripts in the entry point ' 342 'error: Found either zero or multiple dart scripts in the entry point '
183 '`web/test.html`. Exactly one was expected.', 343 '`web/test.html`. Exactly one was expected.',
184 ], StringFormatter.noNewlinesOrSurroundingWhitespace); 344 ],
185 345 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
186 testPhases('single script, no library in script', phases, { 346
187 'a|web/test.html': ''' 347 testPhases(
348 'single script, no library in script',
349 phases,
350 {
351 'a|web/test.html': '''
188 <!DOCTYPE html><html><head> 352 <!DOCTYPE html><html><head>
189 <script type="application/dart">main() { }</script>''', 353 <script type="application/dart">main() { }</script>''',
190 }, { 354 },
191 'a|web/test.html': ''' 355 {
356 'a|web/test.html': '''
192 <!DOCTYPE html><html><head> 357 <!DOCTYPE html><html><head>
193 <script type="application/dart" src="test.bootstrap.dart"> 358 <script type="application/dart" src="test.bootstrap.dart">
194 </script> 359 </script>
195 </head><body></body></html>''', 360 </head><body></body></html>''',
196 'a|web/test.html.0.dart': ''' 361 'a|web/test.html.0.dart': '''
197 library a.web.test_html_0; 362 library a.web.test_html_0;
198 main() { }''', 363 main() { }''',
199 'a|web/test.bootstrap.dart': ''' 364 'a|web/test.bootstrap.dart': '''
200 library a.web.test_bootstrap_dart; 365 library a.web.test_bootstrap_dart;
201 366
202 import 'test.html.0.dart' as i0; 367 import 'test.html.0.dart' as i0;
203 368
204 main() => i0.main();''', 369 main() => i0.main();''',
205 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 370 },
206 371 messages: [],
207 testPhases('single script, with library', phases, { 372 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
208 'a|web/test.html': ''' 373
374 testPhases(
375 'single script, with library',
376 phases,
377 {
378 'a|web/test.html': '''
209 <!DOCTYPE html><html><head> 379 <!DOCTYPE html><html><head>
210 <script type="application/dart"> 380 <script type="application/dart">
211 library f; 381 library f;
212 main() { } 382 main() { }
213 </script>''', 383 </script>''',
214 }, { 384 },
215 'a|web/test.html': ''' 385 {
386 'a|web/test.html': '''
216 <!DOCTYPE html><html><head> 387 <!DOCTYPE html><html><head>
217 <script type="application/dart" src="test.bootstrap.dart"> 388 <script type="application/dart" src="test.bootstrap.dart">
218 </script> 389 </script>
219 </head><body></body></html>''', 390 </head><body></body></html>''',
220 'a|web/test.html.0.dart': ''' 391 'a|web/test.html.0.dart': '''
221 library f; 392 library f;
222 main() { }''', 393 main() { }''',
223 'a|web/test.bootstrap.dart': ''' 394 'a|web/test.bootstrap.dart': '''
224 library a.web.test_bootstrap_dart; 395 library a.web.test_bootstrap_dart;
225 396
226 import 'test.html.0.dart' as i0; 397 import 'test.html.0.dart' as i0;
227 398
228 main() => i0.main();''', 399 main() => i0.main();''',
229 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 400 },
230 401 messages: [],
231 testPhases('under lib/ directory not transformed', phases, { 402 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
232 'a|lib/test.html': ''' 403
404 testPhases(
405 'under lib/ directory not transformed',
406 phases,
407 {
408 'a|lib/test.html': '''
233 <!DOCTYPE html><html><head> 409 <!DOCTYPE html><html><head>
234 <script type="application/dart"> 410 <script type="application/dart">
235 library f; 411 library f;
236 main() { } 412 main() { }
237 </script>''', 413 </script>''',
238 }, { 414 },
239 'a|lib/test.html': ''' 415 {
416 'a|lib/test.html': '''
240 <!DOCTYPE html><html><head> 417 <!DOCTYPE html><html><head>
241 <script type="application/dart"> 418 <script type="application/dart">
242 library f; 419 library f;
243 main() { } 420 main() { }
244 </script>''', 421 </script>''',
245 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 422 },
246 423 messages: [],
247 testPhases('multiple scripts - error', phases, { 424 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
248 'a|web/test.html': ''' 425
426 testPhases(
427 'multiple scripts - error',
428 phases,
429 {
430 'a|web/test.html': '''
249 <!DOCTYPE html><html><head> 431 <!DOCTYPE html><html><head>
250 <script type="application/dart"> 432 <script type="application/dart">
251 library a1; 433 library a1;
252 main1() { } 434 main1() { }
253 </script> 435 </script>
254 <script type="application/dart">library a2;\nmain2() { }</script>''', 436 <script type="application/dart">library a2;\nmain2() { }</script>''',
255 }, {}, [ 437 },
256 'error: Found either zero or multiple dart scripts in the entry point ' 438 {},
257 '`web/test.html`. Exactly one was expected.', 439 messages: [
258 ], StringFormatter.noNewlinesOrSurroundingWhitespace); 440 'error: Found either zero or multiple dart scripts in the entry point '
259 441 '`web/test.html`. Exactly one was expected.',
260 testPhases('multiple imported scripts', phases, { 442 ],
261 'a|web/test.html': ''' 443 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
444
445 testPhases(
446 'multiple imported scripts',
447 phases,
448 {
449 'a|web/test.html': '''
262 <link rel="import" href="test2.html"> 450 <link rel="import" href="test2.html">
263 <link rel="import" href="bar/test.html"> 451 <link rel="import" href="bar/test.html">
264 <link rel="import" href="packages/a/foo/test.html"> 452 <link rel="import" href="packages/a/foo/test.html">
265 <link rel="import" href="packages/b/test.html"> 453 <link rel="import" href="packages/b/test.html">
266 <script type="application/dart" src="test.dart"></script>''', 454 <script type="application/dart" src="test.dart"></script>''',
267 'a|web/test.dart': 'library a.test;', 455 'a|web/test.dart': 'library a.test;',
268 'a|web/test2.html': '<script type="application/dart">main1() { }', 456 'a|web/test2.html': '<script type="application/dart">main1() { }',
269 'a|web/bar/test.html': '<script type="application/dart">main2() { }', 457 'a|web/bar/test.html': '<script type="application/dart">main2() { }',
270 'a|lib/foo/test.html': '<script type="application/dart">main3() { }', 458 'a|lib/foo/test.html': '<script type="application/dart">main3() { }',
271 'b|lib/test.html': '<script type="application/dart">main4() { }', 459 'b|lib/test.html': '<script type="application/dart">main4() { }',
272 }, { 460 },
273 'a|web/test.html': ''' 461 {
462 'a|web/test.html': '''
274 <html> 463 <html>
275 <head> 464 <head>
276 <link rel="import" href="test2.html"> 465 <link rel="import" href="test2.html">
277 <link rel="import" href="bar/test.html"> 466 <link rel="import" href="bar/test.html">
278 <link rel="import" href="packages/a/foo/test.html"> 467 <link rel="import" href="packages/a/foo/test.html">
279 <link rel="import" href="packages/b/test.html"> 468 <link rel="import" href="packages/b/test.html">
280 <script type="application/dart" src="test.bootstrap.dart"></script> 469 <script type="application/dart" src="test.bootstrap.dart"></script>
281 </head><body></body></html>''', 470 </head><body></body></html>''',
282 'a|web/test.bootstrap.dart': ''' 471 'a|web/test.bootstrap.dart': '''
283 library a.web.test_bootstrap_dart; 472 library a.web.test_bootstrap_dart;
284 import 'test.html.0.dart' as i0; 473 import 'test.html.0.dart' as i0;
285 import 'test.html.1.dart' as i1; 474 import 'test.html.1.dart' as i1;
286 import 'test.html.2.dart' as i2; 475 import 'test.html.2.dart' as i2;
287 import 'test.html.3.dart' as i3; 476 import 'test.html.3.dart' as i3;
288 import 'test.dart' as i4; 477 import 'test.dart' as i4;
289 478
290 main() => i4.main(); 479 main() => i4.main();
291 ''', 480 ''',
292 'a|web/test.html.0.dart': ''' 481 'a|web/test.html.0.dart': '''
293 library a.web.test_html_0; 482 library a.web.test_html_0;
294 main1() { }''', 483 main1() { }''',
295 'a|web/test.html.1.dart': ''' 484 'a|web/test.html.1.dart': '''
296 library a.web.test_html_1; 485 library a.web.test_html_1;
297 main2() { }''', 486 main2() { }''',
298 'a|web/test.html.2.dart': ''' 487 'a|web/test.html.2.dart': '''
299 library a.web.test_html_2; 488 library a.web.test_html_2;
300 main3() { }''', 489 main3() { }''',
301 'a|web/test.html.3.dart': ''' 490 'a|web/test.html.3.dart': '''
302 library a.web.test_html_3; 491 library a.web.test_html_3;
303 main4() { }''', 492 main4() { }''',
304 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 493 },
494 messages: [],
495 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
305 } 496 }
306 497
307 dartUriTests() { 498 dartUriTests() {
308 testPhases('from web folder', phases, { 499 testPhases(
309 'a|web/test.html': ''' 500 'from web folder',
501 phases,
502 {
503 'a|web/test.html': '''
310 <!DOCTYPE html><html><head> 504 <!DOCTYPE html><html><head>
311 <link rel="import" href="test2/foo.html"> 505 <link rel="import" href="test2/foo.html">
312 <script type="application/dart" src="test.dart"></script> 506 <script type="application/dart" src="test.dart"></script>
313 </head><body></body></html>''', 507 </head><body></body></html>''',
314 'a|web/test.dart': 'library a.test;', 508 'a|web/test.dart': 'library a.test;',
315 'a|web/test2/foo.html': ''' 509 'a|web/test2/foo.html': '''
316 <!DOCTYPE html><html><head></head><body> 510 <!DOCTYPE html><html><head></head><body>
317 <script type="application/dart"> 511 <script type="application/dart">
318 import 'package:qux/qux.dart'; 512 import 'package:qux/qux.dart';
319 import 'foo.dart'; 513 import 'foo.dart';
320 export 'bar.dart'; 514 export 'bar.dart';
321 part 'baz.dart'; 515 part 'baz.dart';
322 </script> 516 </script>
323 </body></html>''', 517 </body></html>''',
324 }, { 518 },
325 'a|web/test.html': ''' 519 {
520 'a|web/test.html': '''
326 <!DOCTYPE html><html><head> 521 <!DOCTYPE html><html><head>
327 <link rel="import" href="test2/foo.html"> 522 <link rel="import" href="test2/foo.html">
328 <script type="application/dart" src="test.bootstrap.dart"></script> 523 <script type="application/dart" src="test.bootstrap.dart"></script>
329 </head><body></body></html>''', 524 </head><body></body></html>''',
330 'a|web/test.html.0.dart': ''' 525 'a|web/test.html.0.dart': '''
331 library a.web.test_html_0; 526 library a.web.test_html_0;
332 527
333 import 'package:qux/qux.dart'; 528 import 'package:qux/qux.dart';
334 import 'test2/foo.dart'; 529 import 'test2/foo.dart';
335 export 'test2/bar.dart'; 530 export 'test2/bar.dart';
336 part 'test2/baz.dart';''', 531 part 'test2/baz.dart';''',
337 'a|web/test2/foo.html': ''' 532 'a|web/test2/foo.html': '''
338 <!DOCTYPE html><html><head></head><body> 533 <!DOCTYPE html><html><head></head><body>
339 <script type="application/dart" src="foo.bootstrap.dart"> 534 <script type="application/dart" src="foo.bootstrap.dart">
340 </script> 535 </script>
341 </body></html>''', 536 </body></html>''',
342 'a|web/test2/foo.html.0.dart': ''' 537 'a|web/test2/foo.html.0.dart': '''
343 library a.web.test2.foo_html_0; 538 library a.web.test2.foo_html_0;
344 539
345 import 'package:qux/qux.dart'; 540 import 'package:qux/qux.dart';
346 import 'foo.dart'; 541 import 'foo.dart';
347 export 'bar.dart'; 542 export 'bar.dart';
348 part 'baz.dart';''', 543 part 'baz.dart';''',
349 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 544 },
545 messages: [],
546 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
350 547
351 testPhases('from lib folder', phases, { 548 testPhases(
352 'a|web/test.html': ''' 549 'from lib folder',
550 phases,
551 {
552 'a|web/test.html': '''
353 <!DOCTYPE html><html><head> 553 <!DOCTYPE html><html><head>
354 <link rel="import" href="packages/a/test2/foo.html"> 554 <link rel="import" href="packages/a/test2/foo.html">
355 <script type="application/dart" src="test.dart"></script> 555 <script type="application/dart" src="test.dart"></script>
356 </head><body></body></html>''', 556 </head><body></body></html>''',
357 'a|web/test.dart': 'library a.test;', 557 'a|web/test.dart': 'library a.test;',
358 'a|lib/test2/foo.html': ''' 558 'a|lib/test2/foo.html': '''
359 <!DOCTYPE html><html><head></head><body> 559 <!DOCTYPE html><html><head></head><body>
360 <script type="application/dart"> 560 <script type="application/dart">
361 import 'package:qux/qux.dart'; 561 import 'package:qux/qux.dart';
362 import 'foo.dart'; 562 import 'foo.dart';
363 export 'bar.dart'; 563 export 'bar.dart';
364 part 'baz.dart'; 564 part 'baz.dart';
365 </script> 565 </script>
366 </body></html>''', 566 </body></html>''',
367 }, { 567 },
368 'a|web/test.html': ''' 568 {
569 'a|web/test.html': '''
369 <!DOCTYPE html><html><head> 570 <!DOCTYPE html><html><head>
370 <link rel="import" href="packages/a/test2/foo.html"> 571 <link rel="import" href="packages/a/test2/foo.html">
371 <script type="application/dart" src="test.bootstrap.dart"></script> 572 <script type="application/dart" src="test.bootstrap.dart"></script>
372 </head><body></body></html>''', 573 </head><body></body></html>''',
373 'a|web/test.html.0.dart': ''' 574 'a|web/test.html.0.dart': '''
374 library a.web.test_html_0; 575 library a.web.test_html_0;
375 576
376 import 'package:qux/qux.dart'; 577 import 'package:qux/qux.dart';
377 import 'package:a/test2/foo.dart'; 578 import 'package:a/test2/foo.dart';
378 export 'package:a/test2/bar.dart'; 579 export 'package:a/test2/bar.dart';
379 part 'package:a/test2/baz.dart';''', 580 part 'package:a/test2/baz.dart';''',
380 'a|lib/test2/foo.html': ''' 581 'a|lib/test2/foo.html': '''
381 <!DOCTYPE html><html><head></head><body> 582 <!DOCTYPE html><html><head></head><body>
382 <script type="application/dart"> 583 <script type="application/dart">
383 import 'package:qux/qux.dart'; 584 import 'package:qux/qux.dart';
384 import 'foo.dart'; 585 import 'foo.dart';
385 export 'bar.dart'; 586 export 'bar.dart';
386 part 'baz.dart'; 587 part 'baz.dart';
387 </script> 588 </script>
388 </body></html>''', 589 </body></html>''',
389 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 590 },
591 messages: [],
592 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
390 593
391 testPhases('from another pkg', phases, { 594 testPhases(
392 'a|web/test.html': ''' 595 'from another pkg',
596 phases,
597 {
598 'a|web/test.html': '''
393 <!DOCTYPE html><html><head> 599 <!DOCTYPE html><html><head>
394 <link rel="import" href="packages/b/test2/foo.html"> 600 <link rel="import" href="packages/b/test2/foo.html">
395 <script type="application/dart" src="test.dart"></script> 601 <script type="application/dart" src="test.dart"></script>
396 </head><body></body></html>''', 602 </head><body></body></html>''',
397 'a|web/test.dart': 'library a.test;', 603 'a|web/test.dart': 'library a.test;',
398 'b|lib/test2/foo.html': ''' 604 'b|lib/test2/foo.html': '''
399 <!DOCTYPE html><html><head></head><body> 605 <!DOCTYPE html><html><head></head><body>
400 <script type="application/dart"> 606 <script type="application/dart">
401 import 'package:qux/qux.dart'; 607 import 'package:qux/qux.dart';
402 import 'foo.dart'; 608 import 'foo.dart';
403 export 'bar.dart'; 609 export 'bar.dart';
404 part 'baz.dart'; 610 part 'baz.dart';
405 </script> 611 </script>
406 </body></html>''', 612 </body></html>''',
407 }, { 613 },
408 'a|web/test.html': ''' 614 {
615 'a|web/test.html': '''
409 <!DOCTYPE html><html><head> 616 <!DOCTYPE html><html><head>
410 <link rel="import" href="packages/b/test2/foo.html"> 617 <link rel="import" href="packages/b/test2/foo.html">
411 <script type="application/dart" src="test.bootstrap.dart"></script> 618 <script type="application/dart" src="test.bootstrap.dart"></script>
412 </head><body></body></html>''', 619 </head><body></body></html>''',
413 'a|web/test.html.0.dart': ''' 620 'a|web/test.html.0.dart': '''
414 library a.web.test_html_0; 621 library a.web.test_html_0;
415 622
416 import 'package:qux/qux.dart'; 623 import 'package:qux/qux.dart';
417 import 'package:b/test2/foo.dart'; 624 import 'package:b/test2/foo.dart';
418 export 'package:b/test2/bar.dart'; 625 export 'package:b/test2/bar.dart';
419 part 'package:b/test2/baz.dart';''', 626 part 'package:b/test2/baz.dart';''',
420 }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); 627 },
628 messages: [],
629 formatter: StringFormatter.noNewlinesOrSurroundingWhitespace);
421 } 630 }
422 631
423 validateUriTests() { 632 validateUriTests() {
424 testPhases('script src is invalid', phases, { 633 testPhases('script src is invalid', phases, {
425 'a|web/test.html': ''' 634 'a|web/test.html': '''
426 <!DOCTYPE html><html><body> 635 <!DOCTYPE html><html><body>
427 <script type="application/dart" src="a.dart"></script> 636 <script type="application/dart" src="a.dart"></script>
428 </body></html>''', 637 </body></html>''',
429 }, {}, [ 638 }, {}, messages: [
430 'warning: ${scriptFileNotFound.create({'url': 'a|web/a.dart'}).snippet} ' 639 'warning: ${scriptFileNotFound.create({'url': 'a|web/a.dart'}).snippet} '
431 '(web/test.html 1 8)', 640 '(web/test.html 1 8)',
432 ]); 641 ]);
433 } 642 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698