| // Copyright (c) 2015, 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 web_components.test.build.import_inliner_test; |
| |
| import 'package:code_transformers/tests.dart'; |
| import 'package:web_components/build/import_inliner.dart'; |
| import 'package:web_components/build/messages.dart'; |
| import 'package:unittest/compact_vm_config.dart'; |
| import 'package:unittest/unittest.dart'; |
| |
| var transformer = new ImportInlinerTransformer(null, ['{{', '[[']); |
| var phases = [[transformer]]; |
| |
| main() { |
| useCompactVMConfiguration(); |
| |
| // group('rel=import', importTests); |
| // group('url attributes', urlAttributeTests); |
| // group('deep entrypoints', entryPointTests); |
| group('templates', templateTests); |
| } |
| |
| //void importTests() { |
| // testPhases('no imports', phases, { |
| // 'a|web/index.html': ''' |
| // <!DOCTYPE html><html><head></head><body></body></html>''', |
| // }, { |
| // 'a|web/index.html': ''' |
| // <!DOCTYPE html><html><head></head><body></body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('one import, removes dart script', phases, { |
| // 'a|web/index.html': ''' |
| // <!DOCTYPE html> |
| // <html> |
| // <head><link rel="import" href="packages/a/foo.html"></head> |
| // <body></body> |
| // </html>''', |
| // 'a|lib/foo.html': ''' |
| // <div>hello from foo!</div> |
| // <script type="application/dart" src="foo.dart"></script> |
| // ''', |
| // }, { |
| // 'a|web/index.html': ''' |
| // <!DOCTYPE html> |
| // <html> |
| // <head></head> |
| // <body> |
| // <div hidden=""> |
| // <div>hello from foo!</div> |
| // </div> |
| // </body> |
| // </html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('preserves order of scripts', phases, { |
| // 'a|web/index.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <script type="text/javascript">/*first*/</script> |
| // <script src="second.js"></script> |
| // <link rel="import" href="packages/a/foo.html"> |
| // <script>/*forth*/</script> |
| // </head></html>''', |
| // 'a|lib/foo.html': ''' |
| // <!DOCTYPE html><html><head><script>/*third*/</script> |
| // </head><body><polymer-element>2</polymer-element></html>''', |
| // 'a|web/second.js': '/*second*/' |
| // }, { |
| // 'a|web/index.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <script type="text/javascript">/*first*/</script> |
| // <script src="second.js"></script> |
| // </head><body> |
| // <div hidden=""> |
| // <script>/*third*/</script> |
| // <polymer-element>2</polymer-element> |
| // <script>/*forth*/</script> |
| // </div> |
| // </body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('preserves order of scripts, extract Dart scripts', phases, { |
| // 'a|web/index.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">/*fifth*/</script> |
| // </head> |
| // </html>''', |
| // 'a|web/test2.html': ''' |
| // <!DOCTYPE html> |
| // <html> |
| // <head> |
| // <script>/*third*/</script> |
| // <script type="application/dart">/*forth*/</script> |
| // </head> |
| // <body> |
| // <polymer-element>2</polymer-element> |
| // </body> |
| // </html>''', |
| // 'a|web/second.js': '/*second*/' |
| // }, { |
| // 'a|web/index.html': ''' |
| // <!DOCTYPE html> |
| // <html> |
| // <head> |
| // <script type="text/javascript">/*first*/</script> |
| // <script src="second.js"></script> |
| // </head> |
| // <body> |
| // <div hidden=""> |
| // <script>/*third*/</script> |
| // <polymer-element>2</polymer-element> |
| // <script type="application/dart">/*fifth*/</script> |
| // </div> |
| // </body> |
| // </html>''', |
| // 'a|web/test2.html': ''' |
| // <!DOCTYPE html> |
| // <html> |
| // <head> |
| // <script>/*third*/</script> |
| // <script type="application/dart">/*forth*/</script> |
| // </head> |
| // <body> |
| // <polymer-element>2</polymer-element> |
| // </body> |
| // </html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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> |
| // <div hidden=""> |
| // <polymer-element>2</polymer-element> |
| // <polymer-element>3</polymer-element> |
| // </div> |
| // </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>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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> |
| // <div hidden=""> |
| // <polymer-element>4</polymer-element> |
| // <polymer-element>3</polymer-element> |
| // <polymer-element>2</polymer-element> |
| // </div> |
| // </body></html>''', |
| // 'a|web/test2.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>4</polymer-element> |
| // <polymer-element>3</polymer-element> |
| // </div> |
| // <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>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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> |
| // <div hidden=""> |
| // <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> |
| // </div> |
| // </body></html>''', |
| // 'a|web/test2a.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>3a</polymer-element> |
| // <polymer-element>3b</polymer-element> |
| // </div> |
| // <polymer-element>2a</polymer-element> |
| // </body></html>''', |
| // 'a|web/test2b.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>4a</polymer-element> |
| // <polymer-element>4b</polymer-element> |
| // </div> |
| // <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>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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> |
| // <div hidden=""> |
| // <polymer-element>2</polymer-element> |
| // <polymer-element>1</polymer-element> |
| // </div> |
| // </body></html>''', |
| // 'a|web/test_1.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>2</polymer-element> |
| // </div> |
| // <polymer-element>1</polymer-element></body></html>''', |
| // 'a|web/test_2.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>1</polymer-element> |
| // </div> |
| // <polymer-element>2</polymer-element></body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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> |
| // <div hidden=""> |
| // <polymer-element>2</polymer-element> |
| // <script src="s2"></script> |
| // <polymer-element>1</polymer-element> |
| // <script src="s1"></script> |
| // </div> |
| // </body></html>''', |
| // 'a|web/test_1.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>2</polymer-element> |
| // <script src="s2"></script> |
| // </div> |
| // <polymer-element>1</polymer-element> |
| // <script src="s1"></script></body></html>''', |
| // 'a|web/test_2.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>1</polymer-element> |
| // <script src="s1"></script> |
| // </div> |
| // <polymer-element>2</polymer-element> |
| // <script src="s2"></script></body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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 |
| // <script type="application/dart" src="s2.dart"></script> |
| // </polymer-element> |
| // </html>''', |
| // 'a|web/s1.dart': '', |
| // 'a|web/s2.dart': '', |
| // }, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>2</polymer-element> |
| // <polymer-element>1</polymer-element> |
| // </div> |
| // </body></html>''', |
| // 'a|web/test_1.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>2</polymer-element> |
| // </div> |
| // <polymer-element>1</polymer-element> |
| // <script type="application/dart" src="s1.dart"></script> |
| // </body></html>''', |
| // 'a|web/test_2.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>1</polymer-element> |
| // </div> |
| // <polymer-element>2 |
| // <script type="application/dart" src="s2.dart"></script> |
| // </polymer-element> |
| // </body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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" src="s1.dart"></script> |
| // </polymer-element> |
| // 'FOO'</body></html>''', |
| // 'a|web/s1.dart': '', |
| // }, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <foo>42</foo><bar-baz></bar-baz> |
| // <polymer-element>1' |
| // <script src="s1.js"></script> |
| // </polymer-element> |
| // 'FOO' |
| // </div> |
| // </body></html>''', |
| // '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> |
| // <script type="application/dart" src="s1.dart"></script> |
| // </polymer-element> |
| // 'FOO'</body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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> |
| // <div hidden=""> |
| // <polymer-element>3</polymer-element> |
| // <polymer-element>2</polymer-element> |
| // <polymer-element>1</polymer-element> |
| // </div> |
| // </body></html>''', |
| // 'a|web/test_1.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>3</polymer-element> |
| // <polymer-element>2</polymer-element> |
| // </div> |
| // <polymer-element>1</polymer-element></body></html>''', |
| // 'a|web/test_2.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>1</polymer-element> |
| // <polymer-element>3</polymer-element> |
| // </div> |
| // <polymer-element>2</polymer-element></body></html>''', |
| // 'a|web/test_3.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>2</polymer-element> |
| // <polymer-element>1</polymer-element> |
| // </div> |
| // <polymer-element>3</polymer-element></body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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> |
| // <div hidden=""> |
| // <polymer-element>1</polymer-element> |
| // </div> |
| // </body></html>''', |
| // 'a|web/test_1.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <polymer-element>1</polymer-element></body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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> |
| // <div hidden=""> |
| // <polymer-element>3</polymer-element> |
| // <polymer-element>1</polymer-element> |
| // <polymer-element>2</polymer-element> |
| // </div> |
| // </body></html>''', |
| // 'a|web/test_1.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>3</polymer-element> |
| // </div> |
| // <polymer-element>1</polymer-element></body></html>''', |
| // 'a|web/test_2.html': ''' |
| // <!DOCTYPE html><html><head> |
| // </head><body> |
| // <div hidden=""> |
| // <polymer-element>3</polymer-element> |
| // </div> |
| // <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>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('missing html imports throw errors', phases, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <link rel="import" href="foo.html"> |
| // </head></html>''', |
| // }, {}, [ |
| // 'warning: ${inlineImportFail.create({ |
| // 'error': 'Could not find asset a|web/foo.html.' |
| // }).snippet} ' |
| // '(web/test.html 1 8)', |
| // ], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // 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/test2.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <link rel="stylesheet" href="http://example.com/bar.css"> |
| // </head></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| //} |
| // |
| //void urlAttributeTests() { |
| // testPhases('url attributes are normalized', phases, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <link rel="import" href="foo/test_1.html"> |
| // <link rel="import" href="foo/test_2.html"> |
| // </head></html>''', |
| // 'a|web/foo/test_1.html': ''' |
| // <script src="baz.jpg"></script>''', |
| // 'a|web/foo/test_2.html': ''' |
| // <foo-element src="baz.jpg"></foo-element>''', |
| // }, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <div hidden=""> |
| // <script src="foo/baz.jpg"></script> |
| // <foo-element src="baz.jpg"></foo-element> |
| // </div> |
| // </body></html>''', |
| // 'a|web/foo/test_1.html': ''' |
| // <script src="baz.jpg"></script>''', |
| // 'a|web/foo/test_2.html': ''' |
| // <foo-element src="baz.jpg"></foo-element>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('paths with an invalid prefix are not normalized', phases, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <link rel="import" href="packages/a/test.html"> |
| // </head></html>''', |
| // 'a|lib/test.html': ''' |
| // <img src="[[bar]]">''', |
| // }, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <div hidden=""> |
| // <img src="[[bar]]"> |
| // </div> |
| // </body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('relative paths followed by invalid characters are normalized', |
| // phases, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <link rel="import" href="foo/test.html"> |
| // </head></html>''', |
| // 'a|web/foo/test.html': ''' |
| // <img src="baz/{{bar}}"> |
| // <img src="./{{bar}}">''', |
| // }, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <div hidden=""> |
| // <img src="foo/baz/{{bar}}"> |
| // <img src="foo/{{bar}}"> |
| // </div> |
| // </body></html>''', |
| // }, null, StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('relative paths in _* attributes are normalized', phases, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <link rel="import" href="foo/test.html"> |
| // </head></html>''', |
| // 'a|web/foo/test.html': ''' |
| // <img _src="./{{bar}}"> |
| // <a _href="./{{bar}}">test</a>''', |
| // }, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <div hidden=""> |
| // <img _src="foo/{{bar}}"> |
| // <a _href="foo/{{bar}}">test</a> |
| // </div> |
| // </body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('paths starting with a binding are treated as absolute', phases, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <link rel="import" href="packages/a/foo.html"> |
| // </head></html>''', |
| // 'a|lib/foo.html': ''' |
| // <img _src="{{bar}}"> |
| // <img _src="[[bar]]">''', |
| // }, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <div hidden=""> |
| // <img _src="{{bar}}"> |
| // <img _src="[[bar]]"> |
| // </div> |
| // </body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('arbitrary bindings can exist in paths', phases, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <img src="./{{(bar[2] + baz[\'foo\']) * 14 / foobar() - 0.5}}.jpg"> |
| // <img src="./[[bar[2]]].jpg"> |
| // </body></html>''', |
| // }, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <img src="{{(bar[2] + baz[\'foo\']) * 14 / foobar() - 0.5}}.jpg"> |
| // <img src="[[bar[2]]].jpg"> |
| // </body></html>''', |
| // }, null, StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('multiple bindings can exist in paths', phases, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <img src="./{{bar[0]}}/{{baz[1]}}.{{extension}}"> |
| // </body></html>''', |
| // }, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <img src="{{bar[0]}}/{{baz[1]}}.{{extension}}"> |
| // </body></html>''', |
| // }, null, StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('relative paths in deep imports', phases, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <link rel="import" href="foo/foo.html"> |
| // </head></html>''', |
| // 'a|web/foo/foo.html': ''' |
| // <link rel="import" href="bar.html">''', |
| // 'a|web/foo/bar.html': ''' |
| // <style rel="stylesheet" href="baz.css"></style> |
| // <style rel="stylesheet" href="../css/zap.css"></style>''', |
| // 'a|web/foo/baz.css': '', |
| // 'a|web/css/zap.css': '', |
| // }, { |
| // 'a|web/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <div hidden=""> |
| // <style rel="stylesheet" href="foo/baz.css"></style> |
| // <style rel="stylesheet" href="css/zap.css"></style> |
| // </div> |
| // </body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| //} |
| // |
| //void entryPointTests() { |
| // testPhases('one level deep entry points normalize correctly', phases, { |
| // 'a|web/test/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <link rel="import" href="../../packages/a/foo/foo.html"> |
| // </head></html>''', |
| // 'a|lib/foo/foo.html': ''' |
| // <script rel="import" href="../../../packages/b/bar/bar.js"> |
| // </script>''', |
| // 'b|lib/bar/bar.js': ''' |
| // console.log("here");''', |
| // }, { |
| // 'a|web/test/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <div hidden=""> |
| // <script rel="import" href="../packages/b/bar/bar.js"></script> |
| // </div> |
| // </body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('includes in entry points normalize correctly', phases, { |
| // 'a|web/test/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <script src="packages/a/foo/bar.js"></script> |
| // </head></html>''', |
| // 'a|lib/foo/bar.js': ''' |
| // console.log("here");''', |
| // }, { |
| // 'a|web/test/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <script src="../packages/a/foo/bar.js"></script> |
| // </head><body> |
| // </body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| // |
| // testPhases('two level deep entry points normalize correctly', phases, { |
| // 'a|web/test/well/test.html': ''' |
| // <!DOCTYPE html><html><head> |
| // <link rel="import" href="../../../packages/a/foo/foo.html"> |
| // </head></html>''', |
| // 'a|lib/foo/foo.html': ''' |
| // <script rel="import" href="../../../packages/b/bar/bar.js"></script>''', |
| // 'b|lib/bar/bar.js': ''' |
| // console.log("here");''', |
| // }, { |
| // 'a|web/test/well/test.html': ''' |
| // <!DOCTYPE html><html><head></head><body> |
| // <div hidden=""> |
| // <script rel="import" href="../../packages/b/bar/bar.js"></script> |
| // </div> |
| // </body></html>''', |
| // }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| //} |
| |
| void templateTests() { |
| testPhases('allows template inside table', phases, { |
| 'a|web/index.html': ''' |
| <!DOCTYPE html> |
| <html> |
| <head><link rel="import" href="packages/a/foo.html"></head> |
| <body> |
| <dom-module id="hello-element"> |
| <template> |
| <table> |
| <thead> |
| <tr><th>first</th><th>last</th></tr> |
| </thead> |
| <tbody> |
| <template is="dom-repeat" items="{{data}}"> |
| <tr> |
| <td>{{item.first}}</td> |
| <td>{{item.last}}</td> |
| </tr> |
| </template> |
| </tbody> |
| </table> |
| </template> |
| </dom-module> |
| </body> |
| </html>''', |
| 'a|lib/foo.html': ''' |
| <div>hello!</div> |
| ''', |
| }, { |
| 'a|web/index.html': ''' |
| <!DOCTYPE html> |
| <html> |
| <head></head> |
| <body> |
| <div hidden=""> |
| <div>hello!</div> |
| </div> |
| <dom-module id="hello-element"> |
| <template> |
| <table> |
| <thead> |
| <tr><th>first</th><th>last</th></tr> |
| </thead> |
| <tbody> |
| <template is="dom-repeat" items="{{data}}"> |
| <tr> |
| <td>{{item.first}}</td> |
| <td>{{item.last}}</td> |
| </tr> |
| </template> |
| </tbody> |
| </table> |
| </template> |
| </dom-module> |
| </body> |
| </html>''', |
| }, [], StringFormatter.noNewlinesOrSurroundingWhitespace); |
| } |