| Index: pkg/polymer/test/compiler_test.dart
|
| diff --git a/pkg/polymer/test/compiler_test.dart b/pkg/polymer/test/compiler_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..57315587ea71fdd142b64537b547b90dae0081ec
|
| --- /dev/null
|
| +++ b/pkg/polymer/test/compiler_test.dart
|
| @@ -0,0 +1,140 @@
|
| +// Copyright (c) 2012, 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.
|
| +
|
| +/** End-to-end tests for the [Compiler] API. */
|
| +library compiler_test;
|
| +
|
| +import 'package:logging/logging.dart' show Level;
|
| +import 'package:unittest/compact_vm_config.dart';
|
| +import 'package:unittest/unittest.dart';
|
| +import 'package:polymer/src/messages.dart';
|
| +
|
| +import 'testing.dart';
|
| +
|
| +main() {
|
| + useCompactVMConfiguration();
|
| +
|
| + test('recursive dependencies', () {
|
| + var messages = new Messages.silent();
|
| + var compiler = createCompiler({
|
| + 'index.html': '<head>'
|
| + '<link rel="import" href="foo.html">'
|
| + '<link rel="import" href="bar.html">'
|
| + '<body><x-foo></x-foo><x-bar></x-bar>'
|
| + '<script type="application/dart">main() {}</script>',
|
| + 'foo.html': '<head><link rel="import" href="bar.html">'
|
| + '<body><polymer-element name="x-foo" constructor="Foo">'
|
| + '<template><x-bar>',
|
| + 'bar.html': '<head><link rel="import" href="foo.html">'
|
| + '<body><polymer-element name="x-bar" constructor="Boo">'
|
| + '<template><x-foo>',
|
| + }, messages);
|
| +
|
| + compiler.run().then(expectAsync1((e) {
|
| + MockFileSystem fs = compiler.fileSystem;
|
| + expect(fs.readCount, equals({
|
| + 'index.html': 1,
|
| + 'foo.html': 1,
|
| + 'bar.html': 1
|
| + }), reason: 'Actual:\n ${fs.readCount}');
|
| +
|
| + var outputs = compiler.output.map((o) => o.path);
|
| + expect(outputs, equals([
|
| + 'out/foo.html.dart',
|
| + 'out/foo.html.dart.map',
|
| + 'out/bar.html.dart',
|
| + 'out/bar.html.dart.map',
|
| + 'out/index.html.dart',
|
| + 'out/index.html.dart.map',
|
| + 'out/index.html_bootstrap.dart',
|
| + 'out/index.html',
|
| + ]));
|
| + }));
|
| + });
|
| +
|
| + group('missing files', () {
|
| + test('main script', () {
|
| + var messages = new Messages.silent();
|
| + var compiler = createCompiler({
|
| + 'index.html': '<head></head><body>'
|
| + '<script type="application/dart" src="notfound.dart"></script>'
|
| + '</body>',
|
| + }, messages);
|
| +
|
| + compiler.run().then(expectAsync1((e) {
|
| + var msgs = messages.messages.where((m) =>
|
| + m.message.contains('unable')).toList();
|
| +
|
| + expect(msgs.length, 1);
|
| + expect(msgs[0].level, Level.SEVERE);
|
| + expect(msgs[0].message, contains('unable to open file'));
|
| + expect(msgs[0].span, isNotNull);
|
| + expect(msgs[0].span.sourceUrl, 'index.html');
|
| +
|
| + MockFileSystem fs = compiler.fileSystem;
|
| + expect(fs.readCount, { 'index.html': 1, 'notfound.dart': 1 });
|
| +
|
| + var outputs = compiler.output.map((o) => o.path.toString());
|
| + expect(outputs, []);
|
| + }));
|
| + });
|
| +
|
| + test('component html', () {
|
| + var messages = new Messages.silent();
|
| + var compiler = createCompiler({
|
| + 'index.html': '<head>'
|
| + '<link rel="import" href="notfound.html">'
|
| + '<body><x-foo>'
|
| + '<script type="application/dart">main() {}</script>',
|
| + }, messages);
|
| +
|
| + compiler.run().then(expectAsync1((e) {
|
| + var msgs = messages.messages.where((m) =>
|
| + m.message.contains('unable')).toList();
|
| +
|
| + expect(msgs.length, 1);
|
| + expect(msgs[0].level, Level.SEVERE);
|
| + expect(msgs[0].message, contains('unable to open file'));
|
| + expect(msgs[0].span, isNotNull);
|
| + expect(msgs[0].span.sourceUrl, 'index.html');
|
| +
|
| + MockFileSystem fs = compiler.fileSystem;
|
| + expect(fs.readCount, { 'index.html': 1, 'notfound.html': 1 });
|
| +
|
| + var outputs = compiler.output.map((o) => o.path.toString());
|
| + expect(outputs, []);
|
| + }));
|
| + });
|
| +
|
| + test('component script', () {
|
| + var messages = new Messages.silent();
|
| + var compiler = createCompiler({
|
| + 'index.html': '<head>'
|
| + '<link rel="import" href="foo.html">'
|
| + '<body><x-foo></x-foo>'
|
| + '<script type="application/dart">main() {}</script>'
|
| + '</body>',
|
| + 'foo.html': '<body><polymer-element name="x-foo" constructor="Foo">'
|
| + '<template></template>'
|
| + '<script type="application/dart" src="notfound.dart"></script>',
|
| + }, messages);
|
| +
|
| + compiler.run().then(expectAsync1((e) {
|
| + var msgs = messages.messages.where((m) =>
|
| + m.message.contains('unable')).toList();
|
| +
|
| + expect(msgs.length, 1);
|
| + expect(msgs[0].level, Level.SEVERE);
|
| + expect(msgs[0].message, contains('unable to open file'));
|
| +
|
| + MockFileSystem fs = compiler.fileSystem;
|
| + expect(fs.readCount,
|
| + { 'index.html': 1, 'foo.html': 1, 'notfound.dart': 1 });
|
| +
|
| + var outputs = compiler.output.map((o) => o.path.toString());
|
| + expect(outputs, []);
|
| + }));
|
| + });
|
| + });
|
| +}
|
|
|