| 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.transform.import_inliner_test; | 5 library polymer.test.transform.import_inliner_test; |
| 6 | 6 |
| 7 import 'package:polymer/src/transform/common.dart'; |
| 7 import 'package:polymer/src/transform/import_inliner.dart'; | 8 import 'package:polymer/src/transform/import_inliner.dart'; |
| 8 import 'package:unittest/compact_vm_config.dart'; | 9 import 'package:unittest/compact_vm_config.dart'; |
| 9 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
| 10 | 11 |
| 11 import 'common.dart'; | 12 import 'common.dart'; |
| 12 | 13 |
| 13 void main() { | 14 void main() { |
| 14 useCompactVMConfiguration(); | 15 useCompactVMConfiguration(); |
| 15 testPhases('no changes', [[new ImportedElementInliner()]], { | 16 var phases = [[new ImportedElementInliner(new TransformOptions())]]; |
| 17 testPhases('no changes', phases, { |
| 16 'a|web/test.html': '<!DOCTYPE html><html></html>', | 18 'a|web/test.html': '<!DOCTYPE html><html></html>', |
| 17 }, { | 19 }, { |
| 18 'a|web/test.html': '<!DOCTYPE html><html></html>', | 20 'a|web/test.html': '<!DOCTYPE html><html></html>', |
| 19 }); | 21 }); |
| 20 | 22 |
| 21 testPhases('empty import', [[new ImportedElementInliner()]], { | 23 testPhases('empty import', phases, { |
| 22 'a|web/test.html': | 24 'a|web/test.html': |
| 23 '<!DOCTYPE html><html><head>' | 25 '<!DOCTYPE html><html><head>' |
| 24 '<link rel="import" href="">' // empty href | 26 '<link rel="import" href="">' // empty href |
| 25 '</head></html>', | 27 '</head></html>', |
| 26 'a|web/test2.html': | 28 'a|web/test2.html': |
| 27 '<!DOCTYPE html><html><head>' | 29 '<!DOCTYPE html><html><head>' |
| 28 '<link rel="import">' // no href | 30 '<link rel="import">' // no href |
| 29 '</head></html>', | 31 '</head></html>', |
| 30 }, { | 32 }, { |
| 31 'a|web/test.html': | 33 'a|web/test.html': |
| 32 '<!DOCTYPE html><html><head>' | 34 '<!DOCTYPE html><html><head>' |
| 33 '</head><body></body></html>', | 35 '</head><body></body></html>', |
| 34 'a|web/test2.html': | 36 'a|web/test2.html': |
| 35 '<!DOCTYPE html><html><head>' | 37 '<!DOCTYPE html><html><head>' |
| 36 '</head><body></body></html>', | 38 '</head><body></body></html>', |
| 37 }); | 39 }); |
| 38 | 40 |
| 39 testPhases('shallow, no elements', [[new ImportedElementInliner()]], { | 41 testPhases('shallow, no elements', phases, { |
| 40 'a|web/test.html': | 42 'a|web/test.html': |
| 41 '<!DOCTYPE html><html><head>' | 43 '<!DOCTYPE html><html><head>' |
| 42 '<link rel="import" href="test2.html">' | 44 '<link rel="import" href="test2.html">' |
| 43 '</head></html>', | 45 '</head></html>', |
| 44 'a|web/test2.html': | 46 'a|web/test2.html': |
| 45 '<!DOCTYPE html><html><head>' | 47 '<!DOCTYPE html><html><head>' |
| 46 '</head></html>', | 48 '</head></html>', |
| 47 }, { | 49 }, { |
| 48 'a|web/test.html': | 50 'a|web/test.html': |
| 49 '<!DOCTYPE html><html><head>' | 51 '<!DOCTYPE html><html><head>' |
| 50 '</head><body></body></html>', | 52 '</head><body></body></html>', |
| 51 'a|web/test2.html': | 53 'a|web/test2.html': |
| 52 '<!DOCTYPE html><html><head>' | 54 '<!DOCTYPE html><html><head>' |
| 53 '</head></html>', | 55 '</head></html>', |
| 54 }); | 56 }); |
| 55 | 57 |
| 56 testPhases('shallow, elements, one import', [[new ImportedElementInliner()]], | 58 testPhases('shallow, elements, one import', phases, |
| 57 { | 59 { |
| 58 'a|web/test.html': | 60 'a|web/test.html': |
| 59 '<!DOCTYPE html><html><head>' | 61 '<!DOCTYPE html><html><head>' |
| 60 '<link rel="import" href="test2.html">' | 62 '<link rel="import" href="test2.html">' |
| 61 '</head></html>', | 63 '</head></html>', |
| 62 'a|web/test2.html': | 64 'a|web/test2.html': |
| 63 '<!DOCTYPE html><html><head>' | 65 '<!DOCTYPE html><html><head>' |
| 64 '</head><body><polymer-element>2</polymer-element></html>', | 66 '</head><body><polymer-element>2</polymer-element></html>', |
| 65 }, { | 67 }, { |
| 66 'a|web/test.html': | 68 'a|web/test.html': |
| 67 '<!DOCTYPE html><html><head>' | 69 '<!DOCTYPE html><html><head>' |
| 68 '</head><body>' | 70 '</head><body>' |
| 69 '<polymer-element>2</polymer-element>' | 71 '<polymer-element>2</polymer-element>' |
| 70 '</body></html>', | 72 '</body></html>', |
| 71 'a|web/test2.html': | 73 'a|web/test2.html': |
| 72 '<!DOCTYPE html><html><head>' | 74 '<!DOCTYPE html><html><head>' |
| 73 '</head><body><polymer-element>2</polymer-element></html>', | 75 '</head><body><polymer-element>2</polymer-element></html>', |
| 74 }); | 76 }); |
| 75 | 77 |
| 76 testPhases('no transformation outside web/', [[new ImportedElementInliner()]], | 78 testPhases('no transformation outside web/', phases, |
| 77 { | 79 { |
| 78 'a|lib/test.html': | 80 'a|lib/test.html': |
| 79 '<!DOCTYPE html><html><head>' | 81 '<!DOCTYPE html><html><head>' |
| 80 '<link rel="import" href="test2.html">' | 82 '<link rel="import" href="test2.html">' |
| 81 '</head></html>', | 83 '</head></html>', |
| 82 'a|lib/test2.html': | 84 'a|lib/test2.html': |
| 83 '<!DOCTYPE html><html><head>' | 85 '<!DOCTYPE html><html><head>' |
| 84 '</head><body><polymer-element>2</polymer-element></html>', | 86 '</head><body><polymer-element>2</polymer-element></html>', |
| 85 }, { | 87 }, { |
| 86 'a|lib/test.html': | 88 'a|lib/test.html': |
| 87 '<!DOCTYPE html><html><head>' | 89 '<!DOCTYPE html><html><head>' |
| 88 '<link rel="import" href="test2.html">' | 90 '<link rel="import" href="test2.html">' |
| 89 '</head></html>', | 91 '</head></html>', |
| 90 'a|lib/test2.html': | 92 'a|lib/test2.html': |
| 91 '<!DOCTYPE html><html><head>' | 93 '<!DOCTYPE html><html><head>' |
| 92 '</head><body><polymer-element>2</polymer-element></html>', | 94 '</head><body><polymer-element>2</polymer-element></html>', |
| 93 }); | 95 }); |
| 94 | 96 |
| 95 testPhases('shallow, elements, many', [[new ImportedElementInliner()]], | 97 testPhases('shallow, elements, many', phases, |
| 96 { | 98 { |
| 97 'a|web/test.html': | 99 'a|web/test.html': |
| 98 '<!DOCTYPE html><html><head>' | 100 '<!DOCTYPE html><html><head>' |
| 99 '<link rel="import" href="test2.html">' | 101 '<link rel="import" href="test2.html">' |
| 100 '<link rel="import" href="test3.html">' | 102 '<link rel="import" href="test3.html">' |
| 101 '</head></html>', | 103 '</head></html>', |
| 102 'a|web/test2.html': | 104 'a|web/test2.html': |
| 103 '<!DOCTYPE html><html><head>' | 105 '<!DOCTYPE html><html><head>' |
| 104 '</head><body><polymer-element>2</polymer-element></html>', | 106 '</head><body><polymer-element>2</polymer-element></html>', |
| 105 'a|web/test3.html': | 107 'a|web/test3.html': |
| 106 '<!DOCTYPE html><html><head>' | 108 '<!DOCTYPE html><html><head>' |
| 107 '</head><body><polymer-element>3</polymer-element></html>', | 109 '</head><body><polymer-element>3</polymer-element></html>', |
| 108 }, { | 110 }, { |
| 109 'a|web/test.html': | 111 'a|web/test.html': |
| 110 '<!DOCTYPE html><html><head>' | 112 '<!DOCTYPE html><html><head>' |
| 111 '</head><body>' | 113 '</head><body>' |
| 112 '<polymer-element>2</polymer-element>' | 114 '<polymer-element>2</polymer-element>' |
| 113 '<polymer-element>3</polymer-element>' | 115 '<polymer-element>3</polymer-element>' |
| 114 '</body></html>', | 116 '</body></html>', |
| 115 'a|web/test2.html': | 117 'a|web/test2.html': |
| 116 '<!DOCTYPE html><html><head>' | 118 '<!DOCTYPE html><html><head>' |
| 117 '</head><body><polymer-element>2</polymer-element></html>', | 119 '</head><body><polymer-element>2</polymer-element></html>', |
| 118 'a|web/test3.html': | 120 'a|web/test3.html': |
| 119 '<!DOCTYPE html><html><head>' | 121 '<!DOCTYPE html><html><head>' |
| 120 '</head><body><polymer-element>3</polymer-element></html>', | 122 '</head><body><polymer-element>3</polymer-element></html>', |
| 121 }); | 123 }); |
| 122 | 124 |
| 123 testPhases('deep, elements, one per file', [[new ImportedElementInliner()]], { | 125 testPhases('deep, elements, one per file', phases, { |
| 124 'a|web/test.html': | 126 'a|web/test.html': |
| 125 '<!DOCTYPE html><html><head>' | 127 '<!DOCTYPE html><html><head>' |
| 126 '<link rel="import" href="test2.html">' | 128 '<link rel="import" href="test2.html">' |
| 127 '</head></html>', | 129 '</head></html>', |
| 128 'a|web/test2.html': | 130 'a|web/test2.html': |
| 129 '<!DOCTYPE html><html><head>' | 131 '<!DOCTYPE html><html><head>' |
| 130 '<link rel="import" href="assets/b/test3.html">' | 132 '<link rel="import" href="assets/b/test3.html">' |
| 131 '</head><body><polymer-element>2</polymer-element></html>', | 133 '</head><body><polymer-element>2</polymer-element></html>', |
| 132 'b|asset/test3.html': | 134 'b|asset/test3.html': |
| 133 '<!DOCTYPE html><html><head>' | 135 '<!DOCTYPE html><html><head>' |
| (...skipping 17 matching lines...) Expand all Loading... |
| 151 '<polymer-element>2</polymer-element></body></html>', | 153 '<polymer-element>2</polymer-element></body></html>', |
| 152 'b|asset/test3.html': | 154 'b|asset/test3.html': |
| 153 '<!DOCTYPE html><html><head>' | 155 '<!DOCTYPE html><html><head>' |
| 154 '<link rel="import" href="packages/c/test4.html">' | 156 '<link rel="import" href="packages/c/test4.html">' |
| 155 '</head><body><polymer-element>3</polymer-element></html>', | 157 '</head><body><polymer-element>3</polymer-element></html>', |
| 156 'c|lib/test4.html': | 158 'c|lib/test4.html': |
| 157 '<!DOCTYPE html><html><head>' | 159 '<!DOCTYPE html><html><head>' |
| 158 '</head><body><polymer-element>4</polymer-element></html>', | 160 '</head><body><polymer-element>4</polymer-element></html>', |
| 159 }); | 161 }); |
| 160 | 162 |
| 161 testPhases('deep, elements, many imports', [[new ImportedElementInliner()]], { | 163 testPhases('deep, elements, many imports', phases, { |
| 162 'a|web/test.html': | 164 'a|web/test.html': |
| 163 '<!DOCTYPE html><html><head>' | 165 '<!DOCTYPE html><html><head>' |
| 164 '<link rel="import" href="test2a.html">' | 166 '<link rel="import" href="test2a.html">' |
| 165 '<link rel="import" href="test2b.html">' | 167 '<link rel="import" href="test2b.html">' |
| 166 '</head></html>', | 168 '</head></html>', |
| 167 'a|web/test2a.html': | 169 'a|web/test2a.html': |
| 168 '<!DOCTYPE html><html><head>' | 170 '<!DOCTYPE html><html><head>' |
| 169 '<link rel="import" href="test3a.html">' | 171 '<link rel="import" href="test3a.html">' |
| 170 '<link rel="import" href="test3b.html">' | 172 '<link rel="import" href="test3b.html">' |
| 171 '</head><body><polymer-element>2a</polymer-element></body></html>', | 173 '</head><body><polymer-element>2a</polymer-element></body></html>', |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 '</head><body>' | 228 '</head><body>' |
| 227 '<polymer-element>4a</polymer-element>' | 229 '<polymer-element>4a</polymer-element>' |
| 228 '</body></html>', | 230 '</body></html>', |
| 229 'a|web/test4b.html': | 231 'a|web/test4b.html': |
| 230 '<!DOCTYPE html><html><head>' | 232 '<!DOCTYPE html><html><head>' |
| 231 '</head><body>' | 233 '</head><body>' |
| 232 '<polymer-element>4b</polymer-element>' | 234 '<polymer-element>4b</polymer-element>' |
| 233 '</body></html>', | 235 '</body></html>', |
| 234 }); | 236 }); |
| 235 | 237 |
| 236 testPhases('imports cycle, 1-step lasso', [[new ImportedElementInliner()]], { | 238 testPhases('imports cycle, 1-step lasso', phases, { |
| 237 'a|web/test.html': | 239 'a|web/test.html': |
| 238 '<!DOCTYPE html><html><head>' | 240 '<!DOCTYPE html><html><head>' |
| 239 '<link rel="import" href="test_1.html">' | 241 '<link rel="import" href="test_1.html">' |
| 240 '</head></html>', | 242 '</head></html>', |
| 241 'a|web/test_1.html': | 243 'a|web/test_1.html': |
| 242 '<!DOCTYPE html><html><head>' | 244 '<!DOCTYPE html><html><head>' |
| 243 '<link rel="import" href="test_2.html">' | 245 '<link rel="import" href="test_2.html">' |
| 244 '</head><body><polymer-element>1</polymer-element></html>', | 246 '</head><body><polymer-element>1</polymer-element></html>', |
| 245 'a|web/test_2.html': | 247 'a|web/test_2.html': |
| 246 '<!DOCTYPE html><html><head>' | 248 '<!DOCTYPE html><html><head>' |
| (...skipping 10 matching lines...) Expand all Loading... |
| 257 '</head><body>' | 259 '</head><body>' |
| 258 '<polymer-element>2</polymer-element>' | 260 '<polymer-element>2</polymer-element>' |
| 259 '<polymer-element>1</polymer-element></body></html>', | 261 '<polymer-element>1</polymer-element></body></html>', |
| 260 'a|web/test_2.html': | 262 'a|web/test_2.html': |
| 261 '<!DOCTYPE html><html><head>' | 263 '<!DOCTYPE html><html><head>' |
| 262 '</head><body>' | 264 '</head><body>' |
| 263 '<polymer-element>1</polymer-element>' | 265 '<polymer-element>1</polymer-element>' |
| 264 '<polymer-element>2</polymer-element></body></html>', | 266 '<polymer-element>2</polymer-element></body></html>', |
| 265 }); | 267 }); |
| 266 | 268 |
| 267 testPhases('imports cycle, 2-step lasso', [[new ImportedElementInliner()]], { | 269 testPhases('imports cycle, 2-step lasso', phases, { |
| 268 'a|web/test.html': | 270 'a|web/test.html': |
| 269 '<!DOCTYPE html><html><head>' | 271 '<!DOCTYPE html><html><head>' |
| 270 '<link rel="import" href="test_1.html">' | 272 '<link rel="import" href="test_1.html">' |
| 271 '</head></html>', | 273 '</head></html>', |
| 272 'a|web/test_1.html': | 274 'a|web/test_1.html': |
| 273 '<!DOCTYPE html><html><head>' | 275 '<!DOCTYPE html><html><head>' |
| 274 '<link rel="import" href="test_2.html">' | 276 '<link rel="import" href="test_2.html">' |
| 275 '</head><body><polymer-element>1</polymer-element></html>', | 277 '</head><body><polymer-element>1</polymer-element></html>', |
| 276 'a|web/test_2.html': | 278 'a|web/test_2.html': |
| 277 '<!DOCTYPE html><html><head>' | 279 '<!DOCTYPE html><html><head>' |
| (...skipping 23 matching lines...) Expand all Loading... |
| 301 '<polymer-element>3</polymer-element>' | 303 '<polymer-element>3</polymer-element>' |
| 302 '<polymer-element>2</polymer-element></body></html>', | 304 '<polymer-element>2</polymer-element></body></html>', |
| 303 'a|web/test_3.html': | 305 'a|web/test_3.html': |
| 304 '<!DOCTYPE html><html><head>' | 306 '<!DOCTYPE html><html><head>' |
| 305 '</head><body>' | 307 '</head><body>' |
| 306 '<polymer-element>2</polymer-element>' | 308 '<polymer-element>2</polymer-element>' |
| 307 '<polymer-element>1</polymer-element>' | 309 '<polymer-element>1</polymer-element>' |
| 308 '<polymer-element>3</polymer-element></body></html>', | 310 '<polymer-element>3</polymer-element></body></html>', |
| 309 }); | 311 }); |
| 310 | 312 |
| 311 testPhases('imports cycle, self cycle', [[new ImportedElementInliner()]], { | 313 testPhases('imports cycle, self cycle', phases, { |
| 312 'a|web/test.html': | 314 'a|web/test.html': |
| 313 '<!DOCTYPE html><html><head>' | 315 '<!DOCTYPE html><html><head>' |
| 314 '<link rel="import" href="test_1.html">' | 316 '<link rel="import" href="test_1.html">' |
| 315 '</head></html>', | 317 '</head></html>', |
| 316 'a|web/test_1.html': | 318 'a|web/test_1.html': |
| 317 '<!DOCTYPE html><html><head>' | 319 '<!DOCTYPE html><html><head>' |
| 318 '<link rel="import" href="test_1.html">' | 320 '<link rel="import" href="test_1.html">' |
| 319 '</head><body><polymer-element>1</polymer-element></html>', | 321 '</head><body><polymer-element>1</polymer-element></html>', |
| 320 }, { | 322 }, { |
| 321 'a|web/test.html': | 323 'a|web/test.html': |
| 322 '<!DOCTYPE html><html><head>' | 324 '<!DOCTYPE html><html><head>' |
| 323 '</head><body>' | 325 '</head><body>' |
| 324 '<polymer-element>1</polymer-element></body></html>', | 326 '<polymer-element>1</polymer-element></body></html>', |
| 325 'a|web/test_1.html': | 327 'a|web/test_1.html': |
| 326 '<!DOCTYPE html><html><head>' | 328 '<!DOCTYPE html><html><head>' |
| 327 '</head><body>' | 329 '</head><body>' |
| 328 '<polymer-element>1</polymer-element></body></html>', | 330 '<polymer-element>1</polymer-element></body></html>', |
| 329 }); | 331 }); |
| 330 | 332 |
| 331 testPhases('imports DAG', [[new ImportedElementInliner()]], { | 333 testPhases('imports DAG', phases, { |
| 332 'a|web/test.html': | 334 'a|web/test.html': |
| 333 '<!DOCTYPE html><html><head>' | 335 '<!DOCTYPE html><html><head>' |
| 334 '<link rel="import" href="test_1.html">' | 336 '<link rel="import" href="test_1.html">' |
| 335 '<link rel="import" href="test_2.html">' | 337 '<link rel="import" href="test_2.html">' |
| 336 '</head></html>', | 338 '</head></html>', |
| 337 'a|web/test_1.html': | 339 'a|web/test_1.html': |
| 338 '<!DOCTYPE html><html><head>' | 340 '<!DOCTYPE html><html><head>' |
| 339 '<link rel="import" href="test_3.html">' | 341 '<link rel="import" href="test_3.html">' |
| 340 '</head><body><polymer-element>1</polymer-element></body></html>', | 342 '</head><body><polymer-element>1</polymer-element></body></html>', |
| 341 'a|web/test_2.html': | 343 'a|web/test_2.html': |
| (...skipping 19 matching lines...) Expand all Loading... |
| 361 '<!DOCTYPE html><html><head>' | 363 '<!DOCTYPE html><html><head>' |
| 362 '</head><body>' | 364 '</head><body>' |
| 363 '<polymer-element>3</polymer-element>' | 365 '<polymer-element>3</polymer-element>' |
| 364 '<polymer-element>2</polymer-element></body></html>', | 366 '<polymer-element>2</polymer-element></body></html>', |
| 365 'a|web/test_3.html': | 367 'a|web/test_3.html': |
| 366 '<!DOCTYPE html><html><head>' | 368 '<!DOCTYPE html><html><head>' |
| 367 '</head><body>' | 369 '</head><body>' |
| 368 '<polymer-element>3</polymer-element></body></html>', | 370 '<polymer-element>3</polymer-element></body></html>', |
| 369 }); | 371 }); |
| 370 } | 372 } |
| OLD | NEW |