| Index: packages/polymer/test/build/all_phases_test.dart
|
| diff --git a/packages/polymer/test/build/all_phases_test.dart b/packages/polymer/test/build/all_phases_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..05868228231fb556191574efe30d8ffaffe35440
|
| --- /dev/null
|
| +++ b/packages/polymer/test/build/all_phases_test.dart
|
| @@ -0,0 +1,323 @@
|
| +// 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.all_phases_test;
|
| +
|
| +import 'package:code_transformers/tests.dart' show testingDartSdkDirectory;
|
| +import 'package:polymer/src/build/common.dart';
|
| +import 'package:polymer/src/build/polymer_smoke_generator.dart'
|
| + show MAIN_HEADER;
|
| +import 'package:polymer/transformer.dart';
|
| +import 'package:smoke/codegen/generator.dart' show DEFAULT_IMPORTS;
|
| +import 'package:unittest/compact_vm_config.dart';
|
| +
|
| +import 'common.dart';
|
| +
|
| +void main() {
|
| + useCompactVMConfiguration();
|
| + var phases = createDeployPhases(new TransformOptions(),
|
| + sdkDir: testingDartSdkDirectory);
|
| +
|
| + testPhases('observable changes', phases, {
|
| + 'a|web/test.dart': _sampleInput('A', 'foo'),
|
| + 'a|web/test2.dart': _sampleOutput('B', 'bar'),
|
| + }, {
|
| + 'a|web/test.dart': _sampleOutput('A', 'foo'),
|
| + 'a|web/test2.dart': _sampleOutput('B', 'bar'),
|
| + });
|
| +
|
| + testPhases('single script', phases, {
|
| + 'a|web/test.html': '<!DOCTYPE html><html><head>'
|
| + '<link rel="import" href="packages/polymer/polymer.html">'
|
| + '<script type="application/dart" src="a.dart"></script>',
|
| + 'a|web/a.dart': _sampleInput('A', 'foo'),
|
| + }, {
|
| + 'a|web/test.html': '<!DOCTYPE html><html><head>'
|
| + '$COMPATIBILITY_JS_TAGS'
|
| + '</head><body><div hidden="">'
|
| + '<script src="test.html.polymer.bootstrap.dart.js" async=""></script>'
|
| + '</div>'
|
| + '</body></html>',
|
| + 'a|web/test.html.polymer.bootstrap.dart': '''$MAIN_HEADER
|
| + import 'test.web_components.bootstrap.dart' as i0;
|
| + ${DEFAULT_IMPORTS.join('\n')}
|
| + import 'package:polymer/polymer.dart' as smoke_0;
|
| + import 'a.dart' as smoke_1;
|
| +
|
| + main() {
|
| + useGeneratedCode(new StaticConfiguration(
|
| + checkedMode: false,
|
| + parents: {
|
| + smoke_1.XA: smoke_0.PolymerElement,
|
| + },
|
| + declarations: {
|
| + smoke_1.XA: {},
|
| + smoke_0.PolymerElement: {},
|
| + }));
|
| + configureForDeployment();
|
| + return i0.main();
|
| + }
|
| + '''.replaceAll('\n ', '\n'),
|
| + 'a|web/test.web_components.bootstrap.dart': '''
|
| + import 'package:initialize/src/static_loader.dart';
|
| + import 'package:initialize/initialize.dart';
|
| + import 'test.bootstrap.dart' as i0;
|
| + import 'a.dart' as i1;
|
| + import 'package:polymer/polymer.dart' as i2;
|
| +
|
| + main() {
|
| + initializers.addAll([new InitEntry(const i2.CustomTag('x-A'), i1.XA),]);
|
| +
|
| + return i0.main();
|
| + }
|
| + '''.replaceAll(' ', ''),
|
| + 'a|web/test.bootstrap.dart': '''
|
| + library a.web.test_bootstrap_dart;
|
| +
|
| + import 'a.dart' as i0;
|
| +
|
| + main() => i0.main();
|
| + '''.replaceAll(' ', ''),
|
| + }, []);
|
| +
|
| + testPhases('single script in subfolder', phases, {
|
| + 'a|web/test.html': '<!DOCTYPE html><html><head>'
|
| + '<link rel="import" href="packages/polymer/polymer.html">'
|
| + '<script type="application/dart" src="foo/a.dart"></script>',
|
| + 'a|web/foo/a.dart': _sampleInput('A', 'foo'),
|
| + }, {
|
| + 'a|web/test.html': '<!DOCTYPE html><html><head>'
|
| + '$COMPATIBILITY_JS_TAGS'
|
| + '</head><body><div hidden="">'
|
| + '<script src="test.html.polymer.bootstrap.dart.js" async=""></script>'
|
| + '</div>'
|
| + '</body></html>',
|
| + 'a|web/test.html.polymer.bootstrap.dart': '''$MAIN_HEADER
|
| + import 'test.web_components.bootstrap.dart' as i0;
|
| + ${DEFAULT_IMPORTS.join('\n')}
|
| + import 'package:polymer/polymer.dart' as smoke_0;
|
| + import 'foo/a.dart' as smoke_1;
|
| +
|
| + main() {
|
| + useGeneratedCode(new StaticConfiguration(
|
| + checkedMode: false,
|
| + parents: {
|
| + smoke_1.XA: smoke_0.PolymerElement,
|
| + },
|
| + declarations: {
|
| + smoke_1.XA: {},
|
| + smoke_0.PolymerElement: {},
|
| + }));
|
| + configureForDeployment();
|
| + return i0.main();
|
| + }
|
| + '''.replaceAll('\n ', '\n'),
|
| + 'a|web/test.web_components.bootstrap.dart': '''
|
| + import 'package:initialize/src/static_loader.dart';
|
| + import 'package:initialize/initialize.dart';
|
| + import 'test.bootstrap.dart' as i0;
|
| + import 'foo/a.dart' as i1;
|
| + import 'package:polymer/polymer.dart' as i2;
|
| +
|
| + main() {
|
| + initializers.addAll([new InitEntry(const i2.CustomTag('x-A'), i1.XA),]);
|
| +
|
| + return i0.main();
|
| + }
|
| + '''.replaceAll(' ', ''),
|
| + 'a|web/test.bootstrap.dart': '''
|
| + library a.web.test_bootstrap_dart;
|
| +
|
| + import 'foo/a.dart' as i0;
|
| +
|
| + main() => i0.main();
|
| + '''.replaceAll(' ', ''),
|
| + }, []);
|
| +
|
| + testPhases('single inline script', phases, {
|
| + 'a|web/test.html': '<!DOCTYPE html><html><head>'
|
| + '<link rel="import" href="packages/polymer/polymer.html">'
|
| + '<script type="application/dart">'
|
| + '${_sampleInput("B", "bar")}</script>',
|
| + }, {
|
| + 'a|web/test.html': '<!DOCTYPE html><html><head>'
|
| + '$COMPATIBILITY_JS_TAGS'
|
| + '</head><body><div hidden="">'
|
| + '<script src="test.html.polymer.bootstrap.dart.js" async=""></script>'
|
| + '</div>'
|
| + '</body></html>',
|
| + 'a|web/test.html.polymer.bootstrap.dart': '''$MAIN_HEADER
|
| + import 'test.web_components.bootstrap.dart' as i0;
|
| + ${DEFAULT_IMPORTS.join('\n')}
|
| + import 'package:polymer/polymer.dart' as smoke_0;
|
| + import 'test.html.0.dart' as smoke_1;
|
| +
|
| + main() {
|
| + useGeneratedCode(new StaticConfiguration(
|
| + checkedMode: false,
|
| + parents: {
|
| + smoke_1.XB: smoke_0.PolymerElement,
|
| + },
|
| + declarations: {
|
| + smoke_0.PolymerElement: {},
|
| + smoke_1.XB: {},
|
| + }));
|
| + configureForDeployment();
|
| + return i0.main();
|
| + }
|
| + '''.replaceAll('\n ', '\n'),
|
| + 'a|web/test.web_components.bootstrap.dart': '''
|
| + import 'package:initialize/src/static_loader.dart';
|
| + import 'package:initialize/initialize.dart';
|
| + import 'test.bootstrap.dart' as i0;
|
| + import 'test.html.0.dart' as i1;
|
| + import 'package:polymer/polymer.dart' as i2;
|
| +
|
| + main() {
|
| + initializers.addAll([new InitEntry(const i2.CustomTag('x-B'), i1.XB),]);
|
| +
|
| + return i0.main();
|
| + }
|
| + '''.replaceAll(' ', ''),
|
| + 'a|web/test.bootstrap.dart': '''
|
| + library a.web.test_bootstrap_dart;
|
| +
|
| + import 'test.html.0.dart' as i0;
|
| +
|
| + main() => i0.main();
|
| + '''.replaceAll(' ', ''),
|
| + 'a|web/test.html.0.dart': _sampleOutput("B", "bar"),
|
| + }, []);
|
| +
|
| + testPhases('with imports', phases, {
|
| + 'a|web/index.html': '<!DOCTYPE html><html><head>'
|
| + '<link rel="import" href="packages/polymer/polymer.html">'
|
| + '<link rel="import" href="packages/a/test2.html">'
|
| + '</head><body>'
|
| + '<script type="application/dart" src="b.dart"></script>',
|
| + 'a|web/b.dart': _sampleInput('B', 'bar'),
|
| + 'a|lib/test2.html': '<!DOCTYPE html><html><head>'
|
| + '<link rel="import" href="../../packages/polymer/polymer.html">'
|
| + '</head><body>'
|
| + '<polymer-element name="x-a">1'
|
| + '<script type="application/dart">'
|
| + '${_sampleInput("A", "foo")}</script>'
|
| + '</polymer-element></html>',
|
| + }, {
|
| + 'a|web/index.html': '<!DOCTYPE html><html><head>'
|
| + '$COMPATIBILITY_JS_TAGS'
|
| + '</head><body>'
|
| + '<div hidden="">'
|
| + '<polymer-element name="x-a">1</polymer-element>'
|
| + '</div>'
|
| + '<script src="index.html.polymer.bootstrap.dart.js" async=""></script>'
|
| + '</body></html>',
|
| + 'a|web/index.html.polymer.bootstrap.dart': '''$MAIN_HEADER
|
| + import 'index.web_components.bootstrap.dart' as i0;
|
| + ${DEFAULT_IMPORTS.join('\n')}
|
| + import 'package:polymer/polymer.dart' as smoke_0;
|
| + import 'index.html.0.dart' as smoke_1;
|
| + import 'b.dart' as smoke_2;
|
| +
|
| + main() {
|
| + useGeneratedCode(new StaticConfiguration(
|
| + checkedMode: false,
|
| + parents: {
|
| + smoke_2.XB: smoke_0.PolymerElement,
|
| + smoke_1.XA: smoke_0.PolymerElement,
|
| + },
|
| + declarations: {
|
| + smoke_2.XB: {},
|
| + smoke_1.XA: {},
|
| + smoke_0.PolymerElement: {},
|
| + }));
|
| + configureForDeployment();
|
| + return i0.main();
|
| + }
|
| + '''.replaceAll('\n ', '\n'),
|
| + 'a|web/index.web_components.bootstrap.dart': '''
|
| + import 'package:initialize/src/static_loader.dart';
|
| + import 'package:initialize/initialize.dart';
|
| + import 'index.bootstrap.dart' as i0;
|
| + import 'index.html.0.dart' as i1;
|
| + import 'package:polymer/polymer.dart' as i2;
|
| + import 'b.dart' as i3;
|
| +
|
| + main() {
|
| + initializers.addAll([
|
| + new InitEntry(const i2.CustomTag('x-A'), i1.XA),
|
| + new InitEntry(const i2.CustomTag('x-B'), i3.XB),
|
| + ]);
|
| +
|
| + return i0.main();
|
| + }
|
| + '''.replaceAll(' ', ''),
|
| + 'a|web/index.bootstrap.dart': '''
|
| + library a.web.index_bootstrap_dart;
|
| +
|
| + import 'index.html.0.dart' as i0;
|
| + import 'b.dart' as i1;
|
| +
|
| + main() => i1.main();
|
| + '''.replaceAll(' ', ''),
|
| + 'a|web/index.html.0.dart': _sampleOutput("A", "foo"),
|
| + }, []);
|
| +
|
| + testPhases('test compatibility', phases, {
|
| + 'a|test/test.html': '<!DOCTYPE html><html><head>'
|
| + '<link rel="x-dart-test" href="a.dart">'
|
| + '<script src="packages/test/dart.js"></script>',
|
| + 'a|test/a.dart': _sampleInput('A', 'foo'),
|
| + }, {
|
| + 'a|test/test.html': '<!DOCTYPE html><html><head>'
|
| + '$COMPATIBILITY_JS_TAGS'
|
| + '<link rel="x-dart-test" href="test.html.polymer.bootstrap.dart">'
|
| + '<script src="packages/test/dart.js"></script>'
|
| + '</head><body></body></html>',
|
| + }, []);
|
| +}
|
| +
|
| +String _sampleInput(String className, String fieldName) => '''
|
| +library ${className}_$fieldName;
|
| +import 'package:observe/observe.dart';
|
| +import 'package:polymer/polymer.dart';
|
| +
|
| +class $className extends Observable {
|
| + @observable int $fieldName;
|
| + $className(this.$fieldName);
|
| +}
|
| +
|
| +@CustomTag('x-$className')
|
| +class X${className} extends PolymerElement {
|
| + X${className}.created() : super.created();
|
| +}
|
| +@initMethod m_$fieldName() {}
|
| +main() {}
|
| +''';
|
| +
|
| +String _sampleOutput(String className, String fieldName) {
|
| + var fieldReplacement = '@reflectable @observable '
|
| + 'int get $fieldName => __\$$fieldName; '
|
| + 'int __\$$fieldName; '
|
| + '@reflectable set $fieldName(int value) { '
|
| + '__\$$fieldName = notifyPropertyChange(#$fieldName, '
|
| + '__\$$fieldName, value); }';
|
| + return '''
|
| +library ${className}_$fieldName;
|
| +import 'package:observe/observe.dart';
|
| +import 'package:polymer/polymer.dart';
|
| +
|
| +class $className extends ChangeNotifier {
|
| + $fieldReplacement
|
| + $className($fieldName) : __\$$fieldName = $fieldName;
|
| +}
|
| +
|
| +@CustomTag('x-$className')
|
| +class X${className} extends PolymerElement {
|
| + X${className}.created() : super.created();
|
| +}
|
| +@initMethod m_$fieldName() {}
|
| +main() {}
|
| +''';
|
| +}
|
|
|