| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| library polymer.test.build.import_inliner_test; |
| |
| import 'dart:convert' show JSON; |
| import 'package:polymer/src/build/common.dart'; |
| import 'package:polymer/src/build/import_inliner.dart'; |
| import 'package:unittest/compact_vm_config.dart'; |
| import 'package:unittest/unittest.dart'; |
| import 'common.dart'; |
| |
| part 'code_extractor.dart'; |
| |
| final phases = [[new ImportInliner(new TransformOptions())]]; |
| |
| void main() { |
| useCompactVMConfiguration(); |
| group('rel=import', importTests); |
| group('rel=stylesheet', stylesheetTests); |
| group('script type=dart', codeExtractorTests); |
| } |
| |
| void importTests() { |
| testPhases('no changes', phases, { |
| 'a|web/test.html': '<!DOCTYPE html><html></html>', |
| }, { |
| 'a|web/test.html': '<!DOCTYPE html><html></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| }); |
| |
| testPhases('empty import', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="">' // empty href |
| '</head></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import">' // no href |
| '</head></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body></body></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body></body></html>', |
| 'a|web/test2.html.scriptUrls': '[]', |
| }); |
| |
| testPhases('shallow, no elements', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test2.html">' |
| '</head></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body></body></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head></html>', |
| 'a|web/test2.html.scriptUrls': '[]', |
| }); |
| |
| testPhases('shallow, elements, one import', phases, |
| { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test2.html">' |
| '</head></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '</body></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'a|web/test2.html.scriptUrls': '[]', |
| }); |
| |
| testPhases('preserves order of scripts', phases, |
| { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<script type="text/javascript">/*first*/</script>' |
| '<script src="second.js"></script>' |
| '<link rel="import" href="test2.html">' |
| '<script>/*forth*/</script>' |
| '</head></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head><script>/*third*/</script>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'a|web/second.js': '/*second*/' |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<script type="text/javascript">/*first*/</script>' |
| '<script src="second.js"></script>' |
| '<script>/*third*/</script>' |
| '<polymer-element>2</polymer-element>' |
| '<script>/*forth*/</script>' |
| '</body></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head><script>/*third*/</script>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'a|web/test2.html.scriptUrls': '[]', |
| 'a|web/second.js': '/*second*/' |
| }); |
| |
| testPhases('preserves order of scripts, including Dart scripts', phases, |
| { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<script type="text/javascript">/*first*/</script>' |
| '<script src="second.js"></script>' |
| '<link rel="import" href="test2.html">' |
| '<script type="application/dart">/*forth*/</script>' |
| '</head></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head><script>/*third*/</script>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'a|web/second.js': '/*second*/' |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<script type="text/javascript">/*first*/</script>' |
| '<script src="second.js"></script>' |
| '<script>/*third*/</script>' |
| '<polymer-element>2</polymer-element>' |
| '<script type="application/dart" src="test.html.0.dart"></script>' |
| '</body></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test.html.0.dart': 'library a.web.test_html_0;\n/*forth*/', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head><script>/*third*/</script>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'a|web/test2.html.scriptUrls': '[]', |
| 'a|web/second.js': '/*second*/' |
| }); |
| |
| testPhases('preserves order, extract component scripts', phases, |
| { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<script type="text/javascript">/*first*/</script>' |
| '<script src="second.js"></script>' |
| '<link rel="import" href="test2.html">' |
| '<script type="application/dart;component=1">/*forth*/</script>' |
| '<script type="application/dart;component=1">/*fifth*/</script>' |
| '</head></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head><script>/*third*/</script>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'a|web/second.js': '/*second*/' |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<script type="text/javascript">/*first*/</script>' |
| '<script src="second.js"></script>' |
| '<script>/*third*/</script>' |
| '<polymer-element>2</polymer-element>' |
| '</body></html>', |
| 'a|web/test.html.scriptUrls': |
| '[["a","web/test.html.0.dart"],["a","web/test.html.1.dart"]]', |
| 'a|web/test.html.0.dart': 'library a.web.test_html_0;\n/*forth*/', |
| 'a|web/test.html.1.dart': 'library a.web.test_html_1;\n/*fifth*/', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head><script>/*third*/</script>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'a|web/test2.html.scriptUrls': '[]', |
| 'a|web/second.js': '/*second*/' |
| }); |
| |
| testPhases('no transformation outside web/', phases, |
| { |
| 'a|lib/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test2.html">' |
| '</head></html>', |
| 'a|lib/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| }, { |
| 'a|lib/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test2.html">' |
| '</head></html>', |
| 'a|lib/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| }); |
| |
| testPhases('shallow, elements, many', phases, |
| { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test2.html">' |
| '<link rel="import" href="test3.html">' |
| '</head></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'a|web/test3.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>3</polymer-element></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '<polymer-element>3</polymer-element>' |
| '</body></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'a|web/test3.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>3</polymer-element></html>', |
| }); |
| |
| testPhases('deep, elements, one per file', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test2.html">' |
| '</head></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="assets/b/test3.html">' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'b|asset/test3.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="../../packages/c/test4.html">' |
| '</head><body><polymer-element>3</polymer-element></html>', |
| 'c|lib/test4.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>4</polymer-element></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>4</polymer-element>' |
| '<polymer-element>3</polymer-element>' |
| '<polymer-element>2</polymer-element></body></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>4</polymer-element>' |
| '<polymer-element>3</polymer-element>' |
| '<polymer-element>2</polymer-element></body></html>', |
| 'b|asset/test3.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="../../packages/c/test4.html">' |
| '</head><body><polymer-element>3</polymer-element></html>', |
| 'c|lib/test4.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>4</polymer-element></html>', |
| }); |
| |
| testPhases('deep, elements, many imports', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test2a.html">' |
| '<link rel="import" href="test2b.html">' |
| '</head></html>', |
| 'a|web/test2a.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test3a.html">' |
| '<link rel="import" href="test3b.html">' |
| '</head><body><polymer-element>2a</polymer-element></body></html>', |
| 'a|web/test2b.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test4a.html">' |
| '<link rel="import" href="test4b.html">' |
| '</head><body><polymer-element>2b</polymer-element></body></html>', |
| 'a|web/test3a.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>3a</polymer-element></body></html>', |
| 'a|web/test3b.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>3b</polymer-element></body></html>', |
| 'a|web/test4a.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>4a</polymer-element></body></html>', |
| 'a|web/test4b.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>4b</polymer-element></body></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>3a</polymer-element>' |
| '<polymer-element>3b</polymer-element>' |
| '<polymer-element>2a</polymer-element>' |
| '<polymer-element>4a</polymer-element>' |
| '<polymer-element>4b</polymer-element>' |
| '<polymer-element>2b</polymer-element>' |
| '</body></html>', |
| 'a|web/test2a.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>3a</polymer-element>' |
| '<polymer-element>3b</polymer-element>' |
| '<polymer-element>2a</polymer-element>' |
| '</body></html>', |
| 'a|web/test2b.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>4a</polymer-element>' |
| '<polymer-element>4b</polymer-element>' |
| '<polymer-element>2b</polymer-element>' |
| '</body></html>', |
| 'a|web/test3a.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>3a</polymer-element>' |
| '</body></html>', |
| 'a|web/test3b.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>3b</polymer-element>' |
| '</body></html>', |
| 'a|web/test4a.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>4a</polymer-element>' |
| '</body></html>', |
| 'a|web/test4b.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>4b</polymer-element>' |
| '</body></html>', |
| }); |
| |
| testPhases('imports cycle, 1-step lasso', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_2.html">' |
| '</head><body><polymer-element>1</polymer-element></html>', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '<polymer-element>1</polymer-element></body></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '<polymer-element>1</polymer-element></body></html>', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>1</polymer-element>' |
| '<polymer-element>2</polymer-element></body></html>', |
| }); |
| |
| testPhases('imports cycle, 1-step lasso, scripts too', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_2.html">' |
| '</head><body><polymer-element>1</polymer-element>' |
| '<script src="s1"></script></html>', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head><body><polymer-element>2</polymer-element>' |
| '<script src="s2"></script></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '<script src="s2"></script>' |
| '<polymer-element>1</polymer-element>' |
| '<script src="s1"></script></body></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '<script src="s2"></script>' |
| '<polymer-element>1</polymer-element>' |
| '<script src="s1"></script></body></html>', |
| 'a|web/test_1.html.scriptUrls': '[]', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>1</polymer-element>' |
| '<script src="s1"></script>' |
| '<polymer-element>2</polymer-element>' |
| '<script src="s2"></script></body></html>', |
| 'a|web/test_2.html.scriptUrls': '[]', |
| }); |
| |
| testPhases('imports cycle, 1-step lasso, Dart scripts too', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_2.html">' |
| '</head><body><polymer-element>1</polymer-element>' |
| '<script type="application/dart" src="s1.dart"></script></html>', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head><body><polymer-element>2</polymer-element>' |
| '<script type="application/dart" src="s2.dart"></script></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '<script type="application/dart" src="s2.dart"></script>' |
| '<polymer-element>1</polymer-element>' |
| '<script type="application/dart" src="s1.dart"></script>' |
| '</body></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '<script type="application/dart" src="s2.dart"></script>' |
| '<polymer-element>1</polymer-element>' |
| '<script type="application/dart" src="s1.dart"></script>' |
| '</body></html>', |
| 'a|web/test_1.html.scriptUrls': '[]', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>1</polymer-element>' |
| '<script type="application/dart" src="s1.dart"></script>' |
| '<polymer-element>2</polymer-element>' |
| '<script type="application/dart" src="s2.dart"></script>' |
| '</body></html>', |
| 'a|web/test_2.html.scriptUrls': '[]', |
| }); |
| |
| testPhases('imports cycle, 1-step lasso, Dart components scripts', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_2.html">' |
| '</head><body><polymer-element>1</polymer-element>' |
| '<script type="application/dart;component=1" src="s1.dart">' |
| '</script></html>', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head><body><polymer-element>2' |
| '<script type="application/dart;component=1" src="s2.dart"></script>' |
| '</polymer-element>' |
| '</html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '<polymer-element>1</polymer-element>' |
| '</body></html>', |
| 'a|web/test.html.scriptUrls': '[["a","web/s2.dart"],["a","web/s1.dart"]]', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '<polymer-element>1</polymer-element>' |
| '</body></html>', |
| 'a|web/test_1.html.scriptUrls': |
| '[["a","web/s2.dart"],["a","web/s1.dart"]]', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>1</polymer-element>' |
| '<polymer-element>2</polymer-element>' |
| '</body></html>', |
| 'a|web/test_2.html.scriptUrls': |
| '[["a","web/s1.dart"],["a","web/s2.dart"]]', |
| }); |
| |
| testPhases('imports with Dart script after JS script', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head><body>' |
| '<foo>42</foo><bar-baz></bar-baz>' |
| '<polymer-element>1' |
| '<script src="s1.js"></script>' |
| '<script type="application/dart;component=1" src="s1.dart"></script>' |
| '</polymer-element>' |
| 'FOO</body></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<foo>42</foo><bar-baz></bar-baz>' |
| '<polymer-element>1' |
| '<script src="s1.js"></script>' |
| '</polymer-element>' |
| 'FOO</body></html>', |
| 'a|web/test.html.scriptUrls': '[["a","web/s1.dart"]]', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<foo>42</foo><bar-baz></bar-baz>' |
| '<polymer-element>1' |
| '<script src="s1.js"></script>' |
| '</polymer-element>' |
| 'FOO</body></html>', |
| 'a|web/test_1.html.scriptUrls': '[["a","web/s1.dart"]]', |
| }); |
| |
| testPhases('imports cycle, 2-step lasso', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_2.html">' |
| '</head><body><polymer-element>1</polymer-element></html>', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_3.html">' |
| '</head><body><polymer-element>2</polymer-element></html>', |
| 'a|web/test_3.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head><body><polymer-element>3</polymer-element></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>3</polymer-element>' |
| '<polymer-element>2</polymer-element>' |
| '<polymer-element>1</polymer-element></body></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>3</polymer-element>' |
| '<polymer-element>2</polymer-element>' |
| '<polymer-element>1</polymer-element></body></html>', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>1</polymer-element>' |
| '<polymer-element>3</polymer-element>' |
| '<polymer-element>2</polymer-element></body></html>', |
| 'a|web/test_3.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>2</polymer-element>' |
| '<polymer-element>1</polymer-element>' |
| '<polymer-element>3</polymer-element></body></html>', |
| }); |
| |
| testPhases('imports cycle, self cycle', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '</head><body><polymer-element>1</polymer-element></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>1</polymer-element></body></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>1</polymer-element></body></html>', |
| }); |
| |
| testPhases('imports DAG', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_1.html">' |
| '<link rel="import" href="test_2.html">' |
| '</head></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_3.html">' |
| '</head><body><polymer-element>1</polymer-element></body></html>', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test_3.html">' |
| '</head><body><polymer-element>2</polymer-element></body></html>', |
| 'a|web/test_3.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body><polymer-element>3</polymer-element></body></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>3</polymer-element>' |
| '<polymer-element>1</polymer-element>' |
| '<polymer-element>2</polymer-element></body></html>', |
| 'a|web/test_1.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>3</polymer-element>' |
| '<polymer-element>1</polymer-element></body></html>', |
| 'a|web/test_2.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>3</polymer-element>' |
| '<polymer-element>2</polymer-element></body></html>', |
| 'a|web/test_3.html': |
| '<!DOCTYPE html><html><head>' |
| '</head><body>' |
| '<polymer-element>3</polymer-element></body></html>', |
| }); |
| } |
| |
| void stylesheetTests() { |
| |
| testPhases('empty stylesheet', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="stylesheet" href="">' // empty href |
| '</head></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="stylesheet">' // no href |
| '</head></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="stylesheet" href="">' // empty href |
| '</head></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="stylesheet">' // no href |
| '</head></html>', |
| 'a|web/test2.html.scriptUrls': '[]', |
| }); |
| |
| testPhases('absolute uri', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="stylesheet" href="/foo.css">' |
| '</head></html>', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="stylesheet" href="http://example.com/bar.css">' |
| '</head></html>', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="stylesheet" href="/foo.css">' |
| '</head></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test2.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="stylesheet" href="http://example.com/bar.css">' |
| '</head></html>', |
| 'a|web/test2.html.scriptUrls': '[]', |
| }); |
| |
| testPhases('shallow, inlines css', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="stylesheet" href="test2.css">' |
| '</head></html>', |
| 'a|web/test2.css': |
| 'h1 { font-size: 70px; }', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head></head><body>' |
| '<style>h1 { font-size: 70px; }</style>' |
| '</body></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test2.css': |
| 'h1 { font-size: 70px; }', |
| }); |
| |
| testPhases('deep, inlines css', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="test2.html">' |
| '</head></html>', |
| 'a|web/test2.html': |
| '<polymer-element>2' |
| '<link rel="stylesheet" href="assets/b/test3.css">' |
| '</polymer-element>', |
| 'b|asset/test3.css': |
| 'body {\n background: #eaeaea url("../../assets/b/test4.png");\n}\n' |
| '.foo {\n background: url("../../packages/c/test5.png");\n}', |
| 'b|asset/test4.png': 'PNG', |
| 'c|lib/test5.png': 'PNG', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head></head><body>' |
| '<polymer-element>2' |
| '<style>' |
| 'body {\n background: #eaeaea url(assets/b/test4.png);\n}\n' |
| '.foo {\n background: url(packages/c/test5.png);\n}' |
| '</style>' |
| '</polymer-element>' |
| '</body></html>', |
| 'a|web/test2.html': |
| '<html><head></head><body>' |
| '<polymer-element>2' |
| '<style>' |
| 'body {\n background: #eaeaea url(assets/b/test4.png);\n}\n' |
| '.foo {\n background: url(packages/c/test5.png);\n}' |
| '</style>' |
| '</polymer-element>' |
| '</body></html>', |
| 'b|asset/test3.css': |
| 'body {\n background: #eaeaea url("../../assets/b/test4.png");\n}\n' |
| '.foo {\n background: url("../../packages/c/test5.png");\n}', |
| 'b|asset/test4.png': 'PNG', |
| 'c|lib/test5.png': 'PNG', |
| }); |
| |
| testPhases('deep, inlines css, multiple nesting', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<link rel="import" href="foo/test2.html">' |
| '</head></html>', |
| 'a|web/foo/test2.html': |
| '<link rel="import" href="bar/test3.html">' |
| '<polymer-element>2' |
| '<link rel="stylesheet" href="test.css">' |
| '</polymer-element>', |
| 'a|web/foo/bar/test3.html': |
| '<img src="qux.png">', |
| 'a|web/foo/test.css': |
| 'body {\n background: #eaeaea url("test4.png");\n}\n' |
| '.foo {\n background: url("test5.png");\n}', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head></head><body>' |
| '<img src="foo/bar/qux.png">' |
| '<polymer-element>2' |
| '<style>' |
| 'body {\n background: #eaeaea url(foo/test4.png);\n}\n' |
| '.foo {\n background: url(foo/test5.png);\n}' |
| '</style></polymer-element></body></html>', |
| 'a|web/foo/test2.html': |
| '<html><head></head><body>' |
| '<img src="bar/qux.png">' |
| '<polymer-element>2' |
| '<style>' |
| 'body {\n background: #eaeaea url(test4.png);\n}\n' |
| '.foo {\n background: url(test5.png);\n}' |
| '</style></polymer-element></body></html>', |
| 'a|web/foo/bar/test3.html': |
| '<img src="qux.png">', |
| 'a|web/foo/test.css': |
| 'body {\n background: #eaeaea url("test4.png");\n}\n' |
| '.foo {\n background: url("test5.png");\n}', |
| }); |
| |
| testPhases('shallow, inlines css and preserves order', phases, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head>' |
| '<style>.first { color: black }</style>' |
| '<link rel="stylesheet" href="test2.css">' |
| '<style>.second { color: black }</style>' |
| '</head></html>', |
| 'a|web/test2.css': |
| 'h1 { font-size: 70px; }', |
| }, { |
| 'a|web/test.html': |
| '<!DOCTYPE html><html><head></head><body>' |
| '<style>.first { color: black }</style>' |
| '<style>h1 { font-size: 70px; }</style>' |
| '<style>.second { color: black }</style>' |
| '</body></html>', |
| 'a|web/test.html.scriptUrls': '[]', |
| 'a|web/test2.css': |
| 'h1 { font-size: 70px; }', |
| }); |
| |
| } |
| |