Index: packages/polymer/test/build/polyfill_injector_test.dart |
diff --git a/packages/polymer/test/build/polyfill_injector_test.dart b/packages/polymer/test/build/polyfill_injector_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5f52ed54cbca26cd7f326cae8c05a5c6c1045c91 |
--- /dev/null |
+++ b/packages/polymer/test/build/polyfill_injector_test.dart |
@@ -0,0 +1,162 @@ |
+// 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.polyfill_injector_test; |
+ |
+import 'package:polymer/src/build/common.dart'; |
+import 'package:polymer/src/build/polyfill_injector.dart'; |
+import 'package:unittest/compact_vm_config.dart'; |
+import 'package:unittest/unittest.dart'; |
+ |
+import 'common.dart'; |
+ |
+void main() { |
+ useCompactVMConfiguration(); |
+ |
+ group('js', () => runTests()); |
+ group('dart', () => runTests(js: false)); |
+} |
+ |
+void runTests({bool js: true}) { |
+ var phases = |
+ [[new PolyfillInjector(new TransformOptions(directlyIncludeJS: js))]]; |
+ |
+ var ext = js ? '.js' : ''; |
+ var type = js ? '' : 'type="application/dart" '; |
+ var dartJsTag = js ? '' : DART_JS_TAG; |
+ var async = js ? ' async=""' : ''; |
+ |
+ testPhases('no changes', phases, { |
+ 'a|web/test.html': '<!DOCTYPE html><html></html>', |
+ }, {'a|web/test.html': '<!DOCTYPE html><html></html>',}); |
+ |
+ testPhases('no changes under lib ', phases, { |
+ 'a|lib/test.html': '<!DOCTYPE html><html><head></head><body>' |
+ '<script type="application/dart" src="a.dart"></script>', |
+ }, { |
+ 'a|lib/test.html': '<!DOCTYPE html><html><head></head><body>' |
+ '<script type="application/dart" src="a.dart"></script>', |
+ }); |
+ |
+ testPhases('with some script', phases, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head></head><body>' |
+ '<script type="application/dart" src="a.dart"></script>', |
+ }, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '$COMPATIBILITY_JS_TAGS' |
+ '</head><body>' |
+ '<script ${type}src="a.dart$ext"$async></script>' |
+ '$dartJsTag' |
+ '</body></html>', |
+ }); |
+ |
+ testPhases('interop/shadow dom already present', phases, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '$COMPATIBILITY_JS_TAGS' |
+ '</head><body>' |
+ '<script type="application/dart" src="a.dart"></script>' |
+ '$dartJsTag' |
+ }, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '$COMPATIBILITY_JS_TAGS' |
+ '</head><body>' |
+ '<script ${type}src="a.dart$ext"$async></script>' |
+ '$dartJsTag' |
+ '</body></html>', |
+ }); |
+ |
+ testPhases('dart_support.js after webcomponents.js, web_components present', |
+ phases, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '$WEB_COMPONENTS_JS_TAG' |
+ '</head><body>' |
+ '<script type="application/dart" src="a.dart"></script>' |
+ '$dartJsTag' |
+ }, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '$COMPATIBILITY_JS_TAGS' |
+ '</head><body>' |
+ '<script ${type}src="a.dart$ext"$async></script>' |
+ '$dartJsTag' |
+ '</body></html>', |
+ }); |
+ |
+ testPhases('dart_support.js after webcomponents.js, dart_support present', |
+ phases, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '$DART_SUPPORT_TAG' |
+ '</head><body>' |
+ '<script type="application/dart" src="a.dart"></script>' |
+ '$dartJsTag' |
+ }, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '$COMPATIBILITY_JS_TAGS' |
+ '</head><body>' |
+ '<script ${type}src="a.dart$ext"$async></script>' |
+ '$dartJsTag' |
+ '</body></html>', |
+ }); |
+ |
+ testPhases('polyfills after base tags', phases, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '<base href="/">' |
+ '</head><body>' |
+ '<script type="application/dart" src="a.dart"></script>' |
+ '$dartJsTag' |
+ }, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '<base href="/">' |
+ '$COMPATIBILITY_JS_TAGS' |
+ '</head><body>' |
+ '<script ${type}src="a.dart$ext"$async></script>' |
+ '$dartJsTag' |
+ '</body></html>', |
+ }); |
+ |
+ testPhases('platform.js -> webcomponents.js', phases, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '$PLATFORM_JS_TAG' |
+ '</head><body>' |
+ '<script type="application/dart" src="a.dart"></script>' |
+ '$dartJsTag' |
+ }, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '$COMPATIBILITY_JS_TAGS' |
+ '</head><body>' |
+ '<script ${type}src="a.dart$ext"$async></script>' |
+ '$dartJsTag' |
+ '</body></html>', |
+ }); |
+ |
+ testPhases('in subfolder', phases, { |
+ 'a|web/sub/test.html': '<!DOCTYPE html><html><head></head><body>' |
+ '<script type="application/dart" src="a.dart"></script>', |
+ }, { |
+ 'a|web/sub/test.html': '<!DOCTYPE html><html><head>' |
+ '${COMPATIBILITY_JS_TAGS.replaceAll('packages', '../packages')}' |
+ '</head><body>' |
+ '<script ${type}src="a.dart$ext"$async></script>' |
+ '$dartJsTag' |
+ '</body></html>', |
+ }); |
+ |
+ var noWebComponentsPhases = [ |
+ [ |
+ new PolyfillInjector(new TransformOptions( |
+ directlyIncludeJS: js, injectWebComponentsJs: false)) |
+ ] |
+ ]; |
+ |
+ testPhases('with no webcomponents.js', noWebComponentsPhases, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head></head><body>' |
+ '<script type="application/dart" src="a.dart"></script>', |
+ }, { |
+ 'a|web/test.html': '<!DOCTYPE html><html><head>' |
+ '$DART_SUPPORT_TAG' |
+ '</head><body>' |
+ '<script ${type}src="a.dart$ext"$async></script>' |
+ '$dartJsTag' |
+ '</body></html>', |
+ }); |
+} |