Merge pull request #39 from dart-lang/0.12.1
update analyzer to 0.27.0 and update to the test package
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4630daf..460ecb7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+#### 0.12.1
+ * Update analyzer to `^0.27.0` and update to the test package.
+
#### 0.12.0+4
* The transformer will now give an informative error on package names with
hyphens.
diff --git a/e2e_test/html_imports/pubspec.yaml b/e2e_test/html_imports/pubspec.yaml
index 996c03b..c7afae9 100644
--- a/e2e_test/html_imports/pubspec.yaml
+++ b/e2e_test/html_imports/pubspec.yaml
@@ -1,11 +1,10 @@
name: html_imports
dependencies:
- browser: '^0.10.0'
initialize: any
web_components:
path: '../../'
dev_dependencies:
- unittest: '^0.11.0'
+ test: '^0.12.0'
transformers:
- web_components:
$include: '**/*_test.html'
diff --git a/e2e_test/html_imports/test/basic_test.dart b/e2e_test/html_imports/test/basic_test.dart
index 0f1aee8..c03e79d 100644
--- a/e2e_test/html_imports/test/basic_test.dart
+++ b/e2e_test/html_imports/test/basic_test.dart
@@ -1,24 +1,22 @@
// 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.
+@TestOn('browser')
@HtmlImport('packages/html_imports/theme.html')
library e2e_test.html_imports.basic_test;
import 'dart:html';
import 'package:initialize/initialize.dart' as init;
import 'package:web_components/html_import_annotation.dart';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
-main() {
- useHtmlConfiguration();
-
+main() async {
// Waits until all html imports are loaded.
- init.run().then((_) {
- test('text is red', () {
- var p = document.createElement('p');
- document.body.append(p);
- expect(p.getComputedStyle().color, 'rgb(255, 0, 0)');
- });
+ await init.run();
+
+ test('text is red', () {
+ var p = document.createElement('p');
+ document.body.append(p);
+ expect(p.getComputedStyle().color, 'rgb(255, 0, 0)');
});
}
diff --git a/e2e_test/html_imports/test/basic_test.html b/e2e_test/html_imports/test/basic_test.html
index e899e5d..c1d95f6 100644
--- a/e2e_test/html_imports/test/basic_test.html
+++ b/e2e_test/html_imports/test/basic_test.html
@@ -4,9 +4,7 @@
<meta name="dart.unittest" content="full-stack-traces">
</head>
<body>
- <script type="text/javascript"
- src="/root_dart/tools/testing/dart/test_controller.js"></script>
- <script type="application/dart" src="basic_test.dart"></script>
- <script src="packages/browser/dart.js"></script>
+ <link rel="x-dart-test" href="basic_test.dart">
+ <script src="packages/test/dart.js"></script>
</body>
</html>
diff --git a/lib/build/html_import_annotation_recorder.dart b/lib/build/html_import_annotation_recorder.dart
index ba5d2ab..9474d69 100644
--- a/lib/build/html_import_annotation_recorder.dart
+++ b/lib/build/html_import_annotation_recorder.dart
@@ -67,11 +67,11 @@
if (annotationElement.element is PropertyAccessorElement) {
originalImportPath = resolver.evaluateConstant(
element.library, annotation.name).value.fields[
- 'filePath'].stringValue;
+ 'filePath'].toStringValue();
} else {
assert(annotationElement.element is ConstructorElement);
originalImportPath = resolver.evaluateConstant(element.library,
- annotation.arguments.arguments.first).value.stringValue;
+ annotation.arguments.arguments.first).value.toStringValue();
}
var libPath;
diff --git a/pubspec.yaml b/pubspec.yaml
index a6672d8..c6fd6d0 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
name: web_components
-version: 0.12.0+4
+version: 0.12.1
author: Polymer.dart Authors <web-ui-dev@dartlang.org>
homepage: https://github.com/dart-lang/web-components/
description: >
@@ -10,14 +10,14 @@
elements, by hiding DOM subtrees under shadow roots. HTML Imports let authors
bundle code and HTML as if they were libraries.
dependencies:
- analyzer: '>=0.22.4 <0.27.0'
+ analyzer: '^0.27.0'
barback: '>=0.14.2 <0.16.0'
- code_transformers: '^0.2.7'
+ code_transformers: '^0.3.0'
html: '^0.12.0'
initialize: '^0.6.0'
path: '^1.3.0'
dev_dependencies:
- unittest: '^0.11.0'
+ test: '^0.12.0'
browser: '^0.10.0'
transformers:
- web_components/build/mirrors_remover:
@@ -29,6 +29,8 @@
- test/custom_element_proxy_test.html
- test/html_import_annotation_test.html
- test/init_web_components_test.html
+- test/pub_serve:
+ $include: test/**_test{.*,}.dart
environment:
sdk: ">=1.9.0-dev.7.1 <2.0.0"
diff --git a/test/build/html_import_annotation_recorder_test.dart b/test/build/html_import_annotation_recorder_test.dart
index a6e832c..0b0fa0d 100644
--- a/test/build/html_import_annotation_recorder_test.dart
+++ b/test/build/html_import_annotation_recorder_test.dart
@@ -1,13 +1,13 @@
// 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.
+@TestOn('vm')
library web_components.test.build.html_import_annotation_recorder_test;
import 'package:code_transformers/tests.dart' hide testPhases;
import 'package:web_components/build/html_import_annotation_recorder.dart';
import 'package:initialize/transformer.dart';
-import 'package:unittest/compact_vm_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
import 'common.dart';
testPhases(String name, Map<String, String> inputs,
@@ -29,8 +29,6 @@
}
main() {
- useCompactVMConfiguration();
-
testPhases('basic', {
'a|web/index.dart': '''
@HtmlImport('index.html')
diff --git a/test/build/import_crawler_test.dart b/test/build/import_crawler_test.dart
index 50d6d80..cf0b3de 100644
--- a/test/build/import_crawler_test.dart
+++ b/test/build/import_crawler_test.dart
@@ -1,6 +1,7 @@
// 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.
+@TestOn('vm')
library web_components.test.build.import_crawler_test;
import 'dart:async';
@@ -10,7 +11,7 @@
import 'package:html/dom.dart' show Document;
import 'package:web_components/build/common.dart';
import 'package:web_components/build/import_crawler.dart';
-import 'package:unittest/compact_vm_config.dart';
+import 'package:test/test.dart';
class _TestTransformer extends Transformer {
final String _entryPoint;
@@ -48,7 +49,6 @@
}
main() {
- useCompactVMConfiguration();
runTests([[new _TestTransformer('web/index.html')]]);
// Test with a preparsed original document as well.
runTests([[new _TestTransformer('web/index.html', true)]]);
diff --git a/test/build/import_inliner_test.dart b/test/build/import_inliner_test.dart
index 046fcf4..f31fe4e 100644
--- a/test/build/import_inliner_test.dart
+++ b/test/build/import_inliner_test.dart
@@ -1,865 +1,43 @@
// 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.
+@TestOn('vm')
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';
+import 'package:test/test.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);
+ 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 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);
-void templateTests() {
- testPhases('allows template inside table', phases, {
+ 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>
- <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>
+ <body></body>
</html>''',
'a|lib/foo.html': '''
- <div>hello!</div>
+ <div>hello from foo!</div>
+ <script type="application/dart" src="foo.dart"></script>
''',
}, {
'a|web/index.html': '''
@@ -868,26 +46,846 @@
<head></head>
<body>
<div hidden="">
- <div>hello!</div>
+ <div>hello from foo!</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);
+
+ 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);
+// }
diff --git a/test/build/mirrors_remover_test.dart b/test/build/mirrors_remover_test.dart
index 0d3f2e4..b327133 100644
--- a/test/build/mirrors_remover_test.dart
+++ b/test/build/mirrors_remover_test.dart
@@ -1,16 +1,14 @@
// 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.
+@TestOn('vm')
library web_components.test.build.mirrors_remover_test;
import 'package:code_transformers/tests.dart';
import 'package:web_components/build/mirrors_remover.dart';
-import 'package:unittest/compact_vm_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
main() {
- useCompactVMConfiguration();
-
var transformer = new MirrorsRemoverTransformer();
var phases = [[transformer]];
diff --git a/test/build/script_compactor_test.dart b/test/build/script_compactor_test.dart
index a72f3e6..a0c2ce3 100644
--- a/test/build/script_compactor_test.dart
+++ b/test/build/script_compactor_test.dart
@@ -1,20 +1,18 @@
// 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.
+@TestOn('vm')
library web_components.test.build.script_compactor_test;
import 'package:code_transformers/tests.dart';
import 'package:web_components/build/messages.dart';
import 'package:web_components/build/script_compactor.dart';
-import 'package:unittest/compact_vm_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
var transformer = new ScriptCompactorTransformer();
var phases = [[transformer]];
main() {
- useCompactVMConfiguration();
-
group('basic', basicTests);
group('code extraction tests', codeExtractorTests);
group('fixes import/export/part URIs', dartUriTests);
diff --git a/test/build/test_compatibility_test.dart b/test/build/test_compatibility_test.dart
index 25272ac..19adfb8 100644
--- a/test/build/test_compatibility_test.dart
+++ b/test/build/test_compatibility_test.dart
@@ -1,19 +1,17 @@
// 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.
+@TestOn('vm')
library web_components.test.build.test_compatibility_test;
import 'package:code_transformers/tests.dart';
import 'package:web_components/build/test_compatibility.dart';
-import 'package:unittest/compact_vm_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
var start = new RewriteXDartTestToScript(null);
var end = new RewriteScriptToXDartTest(null);
main() {
- useCompactVMConfiguration();
-
testPhases('can rewrite x-dart-test link tags to script tags', [[start]], {
'a|test/index.html': '''
<!DOCTYPE html>
diff --git a/test/build/transformer_test.dart b/test/build/transformer_test.dart
index 446eced..df07267 100644
--- a/test/build/transformer_test.dart
+++ b/test/build/transformer_test.dart
@@ -1,11 +1,12 @@
// 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.
+@TestOn('vm')
library web_components.test.build.transformer_test;
import 'package:code_transformers/tests.dart';
import 'package:web_components/transformer.dart';
-import 'package:unittest/compact_vm_config.dart';
+import 'package:test/test.dart';
import 'common.dart';
var transformer = new WebComponentsTransformerGroup(
@@ -13,8 +14,6 @@
var phases = [[transformer]];
main() {
- useCompactVMConfiguration();
-
testPhases('full app', phases, {
'a|web/index.html': '''
<!DOCTYPE html>
diff --git a/test/custom_element_proxy_test.dart b/test/custom_element_proxy_test.dart
index a74942b..b20a213 100644
--- a/test/custom_element_proxy_test.dart
+++ b/test/custom_element_proxy_test.dart
@@ -1,13 +1,13 @@
// 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.
+@TestOn('browser')
library custom_element_proxy_test;
import 'dart:async';
import 'dart:html';
import 'dart:js';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
import 'package:web_components/web_components.dart';
@CustomElementProxy('basic-element')
@@ -32,7 +32,6 @@
}
main() {
- useHtmlConfiguration();
initWebComponents().then((_) {
var container = querySelector('#container') as DivElement;
diff --git a/test/custom_element_proxy_test.html b/test/custom_element_proxy_test.html
index 87053ed..384fbfd 100644
--- a/test/custom_element_proxy_test.html
+++ b/test/custom_element_proxy_test.html
@@ -33,9 +33,7 @@
});
</script>
- <script type="text/javascript"
- src="/root_dart/tools/testing/dart/test_controller.js"></script>
- <script type="application/dart" src="custom_element_proxy_test.dart"></script>
- <script type="text/javascript" src="/packages/browser/dart.js"></script>
+ <link rel="x-dart-test" href="custom_element_proxy_test.dart">
+ <script src="packages/test/dart.js"></script>
</body>
</html>
diff --git a/test/custom_element_test.dart b/test/custom_element_test.dart
index 94a995a..734c0e5 100644
--- a/test/custom_element_test.dart
+++ b/test/custom_element_test.dart
@@ -1,12 +1,12 @@
// 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.
+@TestOn('browser')
library web_components.test.custom_element_test;
import 'dart:async';
import 'dart:html';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
import 'package:web_components/web_components.dart';
@CustomElement('basic-element')
@@ -32,7 +32,6 @@
}
main() {
- useHtmlConfiguration();
initWebComponents().then((_) {
var container = querySelector('#container') as DivElement;
diff --git a/test/custom_element_test.html b/test/custom_element_test.html
index 6041cd7..08220c2 100644
--- a/test/custom_element_test.html
+++ b/test/custom_element_test.html
@@ -22,9 +22,7 @@
<div id="container">
</div>
- <script type="text/javascript"
- src="packages/unittest/test_controller.js"></script>
- <script type="application/dart" src="custom_element_test.dart"></script>
- <script type="text/javascript" src="packages/browser/dart.js"></script>
+ <link rel="x-dart-test" href="custom_element_test.dart">
+ <script src="packages/test/dart.js"></script>
</body>
</html>
diff --git a/test/html_import_annotation_test.dart b/test/html_import_annotation_test.dart
index 6b81a58..d935e57 100644
--- a/test/html_import_annotation_test.dart
+++ b/test/html_import_annotation_test.dart
@@ -1,34 +1,27 @@
// 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.
+@TestOn('browser')
@HtmlImport(importPath)
-// This one will throw a build time warning, but should still work dynamically.
-@HtmlImport('bad_import.html')
library web_components.test.html_import_annotation;
import 'dart:html';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
import 'package:web_components/web_components.dart';
import 'foo/bar.dart';
const String importPath = 'my_import.html';
-main() {
- useHtmlConfiguration();
+main() async {
+ await initWebComponents();
test('adds import to head', () {
- return initWebComponents().then((_) {
- var my_import = document.head.querySelector('link[href="$importPath"]');
- expect(my_import, isNotNull);
- expect(my_import.import.body.text, 'Hello world!\n');
+ var my_import = document.head.querySelector('link[href="$importPath"]');
+ expect(my_import, isNotNull);
+ expect(my_import.import.body.text, 'Hello world!\n');
- var bar = document.head.querySelector('link[href="foo/bar.html"]');
- expect(bar, isNotNull);
- expect(bar.import.body.text, 'bar\n');
-
- var bad = document.head.querySelector('link[href="bad_import.html"]');
- expect(bad.import, isNull);
- });
+ var bar = document.head.querySelector('link[href="foo/bar.html"]');
+ expect(bar, isNotNull);
+ expect(bar.import.body.text, 'bar\n');
});
}
diff --git a/test/html_import_annotation_test.html b/test/html_import_annotation_test.html
index a3455c5..8af5394 100644
--- a/test/html_import_annotation_test.html
+++ b/test/html_import_annotation_test.html
@@ -17,9 +17,7 @@
<body>
<h1> Running html_import_annotation test </h1>
- <script type="text/javascript"
- src="/root_dart/tools/testing/dart/test_controller.js"></script>
- <script type="application/dart" src="html_import_annotation_test.dart"></script>
- <script type="text/javascript" src="/packages/browser/dart.js"></script>
+ <link rel="x-dart-test" href="html_import_annotation_test.dart">
+ <script src="packages/test/dart.js"></script>
</body>
</html>
diff --git a/test/init_web_components_test.dart b/test/init_web_components_test.dart
index 9b66acf..cd418e2 100644
--- a/test/init_web_components_test.dart
+++ b/test/init_web_components_test.dart
@@ -2,10 +2,10 @@
// 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.
@initializeTracker
+@TestOn('browser')
library web_components.test.init_web_components_test;
-import 'package:unittest/html_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
import 'package:initialize/initialize.dart' show LibraryIdentifier;
import 'package:initialize/src/initialize_tracker.dart';
import 'package:web_components/web_components.dart';
@@ -13,8 +13,6 @@
const String importPath = 'my_import.html';
main() {
- useHtmlConfiguration();
-
test('can initialize scripts from html imports', () {
return initWebComponents().then((_) {
var expectedInitializers = [
diff --git a/test/init_web_components_test.html b/test/init_web_components_test.html
index d418e6e..d8fd3dc 100644
--- a/test/init_web_components_test.html
+++ b/test/init_web_components_test.html
@@ -18,9 +18,7 @@
<body>
<h1> Running init_web_components test </h1>
- <script type="text/javascript"
- src="/root_dart/tools/testing/dart/test_controller.js"></script>
- <script type="application/dart" src="init_web_components_test.dart"></script>
- <script type="text/javascript" src="/packages/browser/dart.js"></script>
+ <link rel="x-dart-test" href="init_web_components_test.dart">
+ <script src="packages/test/dart.js"></script>
</body>
</html>
diff --git a/test/interop_test.dart b/test/interop_test.dart
index 20cce29..30bde10 100644
--- a/test/interop_test.dart
+++ b/test/interop_test.dart
@@ -1,19 +1,17 @@
// 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.
-
+@TestOn('browser')
library template_wrappers_test;
import 'dart:html';
import 'dart:async';
import 'dart:js' show context, JsObject;
-import 'package:unittest/html_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
import 'package:web_components/interop.dart';
import 'package:web_components/polyfill.dart';
main() {
- useHtmlConfiguration();
setUp(() => customElementsReady);
test('interop is supported', () {
@@ -67,7 +65,7 @@
expect(c is HtmlElement, isTrue, reason: 'x-c is HtmlElement');
expect(c is XCWrapper, isFalse, reason: 'x-c should not be upgraded yet');
expect(_readX(c), null, reason: 'x-c has not been registered in JS yet');
- });
+ }, skip: 'https://github.com/dart-lang/web-components/issues/38');
test('anything created after registering Dart type is upgraded', () {
context.callMethod('addA');
@@ -97,7 +95,7 @@
expect(d is XDWrapper, isTrue, reason: 'x-d is upgraded to XDWrapper');
expect(d.x, 5);
expect(d.wrapperCount, 4);
- });
+ }, skip: 'https://github.com/dart-lang/web-components/issues/38');
test('events seen if Dart type is registered before registerElement', () {
var c = document.querySelector('x-c');
@@ -119,7 +117,7 @@
expect(c is XCWrapper, isTrue, reason: 'x-c is upgraded to XCWrapper');
expect(c.x, 7);
expect(c.wrapperCount, 6);
- });
+ }, skip: 'https://github.com/dart-lang/web-components/issues/38');
test('element can extend another element', () {
registerDartType('x-e', XEWrapper);
@@ -129,7 +127,7 @@
expect(e is XEWrapper, isTrue);
expect(e.x, 8);
expect(e.y, 9);
- });
+ }, skip: 'https://github.com/dart-lang/web-components/issues/38');
}
int _count = 0;
diff --git a/test/interop_test.html b/test/interop_test.html
index 9b3e5fa..019beab 100644
--- a/test/interop_test.html
+++ b/test/interop_test.html
@@ -10,9 +10,9 @@
.unittest-fail { background: #d55;}
.unittest-error { background: #a11;}
</style>
- <script src="/packages/web_components/webcomponents.js"></script>
- <script src="/packages/web_components/dart_support.js"></script>
- <script src="/packages/web_components/interop_support.js"></script>
+ <script src="packages/web_components/webcomponents-lite.js"></script>
+ <script src="packages/web_components/interop_support.js"></script>
+ <script src="packages/web_components/dart_support.js"></script>
</head>
<body>
<h1> Running interop_test </h1>
@@ -76,9 +76,8 @@
<div is="x-b" id="i2"></div>
<x-c id="i3"></x-c>
<x-d id="i4"></x-d>
- <script type="text/javascript"
- src="/root_dart/tools/testing/dart/test_controller.js"></script>
- <script type="application/dart" src="interop_test.dart"></script>
- <script type="text/javascript" src="/packages/browser/dart.js"></script>
-</body>
+ <link rel="x-dart-test" href="interop_test.dart">
+ <script src="packages/test/dart.js"></script>
+ <!-- <script type="application/dart" src="interop_test.dart"></script>
+ <script src="packages/browser/dart.js"></script> -->
</html>
diff --git a/test/location_wrapper_test.dart b/test/location_wrapper_test.dart
index a1c531a..6120d03 100644
--- a/test/location_wrapper_test.dart
+++ b/test/location_wrapper_test.dart
@@ -2,15 +2,13 @@
// 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.
+@TestOn('browser')
library template_wrappers_test;
import 'dart:html';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
main() {
- useHtmlConfiguration();
-
test('OK to access location with platform.js', () {
expect(window.location.toString(), window.location.href);
});
diff --git a/test/location_wrapper_test.html b/test/location_wrapper_test.html
index 21d59fd..ee18f17 100644
--- a/test/location_wrapper_test.html
+++ b/test/location_wrapper_test.html
@@ -15,9 +15,7 @@
</head>
<body>
<h1> Running template_wrappers_test </h1>
- <script type="text/javascript"
- src="/root_dart/tools/testing/dart/test_controller.js"></script>
- <script type="application/dart" src="location_wrapper_test.dart"></script>
- <script type="text/javascript" src="/packages/browser/dart.js"></script>
+ <link rel="x-dart-test" href="location_wrapper_test.dart">
+ <script src="packages/test/dart.js"></script>
</body>
</html>