Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1619)

Unified Diff: packages/polymer/test/build/linter_test.dart

Issue 2312183003: Removed Polymer from Observatory deps (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: packages/polymer/test/build/linter_test.dart
diff --git a/packages/polymer/test/build/linter_test.dart b/packages/polymer/test/build/linter_test.dart
deleted file mode 100644
index 0b7fe4c81f837bddc7402041491eb625d29fd6c9..0000000000000000000000000000000000000000
--- a/packages/polymer/test/build/linter_test.dart
+++ /dev/null
@@ -1,831 +0,0 @@
-// 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.linter_test;
-
-import 'dart:convert';
-
-import 'package:polymer/src/build/common.dart';
-import 'package:polymer/src/build/linter.dart';
-import 'package:polymer/src/build/messages.dart';
-import 'package:unittest/unittest.dart';
-
-import 'common.dart';
-
-void main() {
- _testLinter('nothing to report', {
- 'a|lib/test.html': '<!DOCTYPE html><html></html>',
- }, []);
-
- group('must have proper initialization imports', () {
- _testLinter('nothing to report (no polymer use)', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, []);
-
- _testLinter('nothing to report (no polymer use with import)', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '<link rel="import" href="packages/polymer/polymer.html">'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, []);
-
- _testLinter('nothing to report (polymer used)', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '<link rel="import" href="packages/polymer/polymer.html">'
- '<polymer-element name="x-a"></polymer-element>'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, []);
-
- _testLinter('nothing to report (polymer imported transitively)', {
- 'a|lib/lib.html': '<!DOCTYPE html><html>'
- '<link rel="import" href="../../packages/polymer/polymer.html">',
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '<link rel="import" href="packages/a/lib.html">'
- '<polymer-element name="x-a"></polymer-element>'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, []);
-
- test('usePolymerHtmlMessage looks right', () {
- _check(int i, String url) {
- expect(_usePolymerHtmlMessage(i),
- contains('<link rel="import" href="$url">'));
- }
- _check(0, 'packages/polymer/polymer.html');
- _check(1, '../packages/polymer/polymer.html');
- _check(2, '../../packages/polymer/polymer.html');
- _check(3, '../../../packages/polymer/polymer.html');
- });
-
- _testLinter('missing polymer.html in web', {
- 'a|web/test.html': '<!DOCTYPE html><html>\n'
- '<polymer-element name="x-a"></polymer-element>'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, [
- 'warning: ${_usePolymerHtmlMessage(0)} '
- '(web/test.html 1 0)',
- ]);
-
- _testLinter('missing polymer.html in web/foo', {
- 'a|web/foo/test.html': '<!DOCTYPE html><html>\n'
- '<polymer-element name="x-a"></polymer-element>'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, [
- 'warning: ${_usePolymerHtmlMessage(1)} '
- '(web/foo/test.html 1 0)',
- ]);
-
- _testLinter('missing polymer.html doesn\'t warn in lib', {
- 'a|lib/test.html': '<!DOCTYPE html><html>\n'
- '<polymer-element name="x-a"></polymer-element>'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, []);
-
- _testLinter('missing polymer.html doesn\'t warn in lib/foo/bar', {
- 'a|lib/foo/bar/test.html': '<!DOCTYPE html><html>\n'
- '<polymer-element name="x-a"></polymer-element>'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, []);
-
- _testLinter('missing Dart code', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '<link rel="import" href="packages/polymer/polymer.html">'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, ['warning: ${MISSING_INIT_POLYMER.snippet}',]);
-
- _testLinter('nothing to report, experimental with no Dart code', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '<link rel="import" '
- 'href="packages/polymer/polymer_experimental.html">'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, []);
-
- _testLinter('experimental cannot have Dart code in main document', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '<link rel="import" '
- 'href="packages/polymer/polymer_experimental.html">\n'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, [
- 'warning: ${NO_DART_SCRIPT_AND_EXPERIMENTAL.snippet} '
- '(web/test.html 1 0)',
- ]);
-
- _testLinter('missing Dart code and polymer.html', {
- 'a|web/test.html': '<!DOCTYPE html><html></html>',
- }, ['warning: ${MISSING_INIT_POLYMER.snippet}',]);
-
- _testLinter('dart_support unnecessary', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '<script src="packages/web_components/dart_support.js"></script>'
- '<link rel="import" href="../../packages/polymer/polymer.html">'
- '<polymer-element name="x-a"></polymer-element>'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, [
- 'warning: ${DART_SUPPORT_NO_LONGER_REQUIRED.snippet} '
- '(web/test.html 0 21)'
- ]);
-
- _testLinter('webcomponents unnecessary', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '$WEB_COMPONENTS_JS_TAG'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '</html>',
- }, [
- 'warning: ${WEB_COMPONENTS_NO_LONGER_REQUIRED.snippet} '
- '(web/test.html 0 21)'
- ]);
-
- _testLinter('platform.js -> webcomponents.js', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '$PLATFORM_JS_TAG'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '</html>',
- }, [
- 'warning: ${PLATFORM_JS_RENAMED.snippet} '
- '(web/test.html 0 21)'
- ]);
- });
-
- group('single script tag per document', () {
- _testLinter('two top-level tags', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '<link rel="import" href="packages/polymer/polymer.html">'
- '<script type="application/dart" src="a.dart">'
- '</script>\n'
- '<script type="application/dart" src="b.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>',
- }, ['warning: ${ONLY_ONE_TAG.snippet} (web/test.html 1 0)',]);
-
- _testLinter('two top-level tags, non entrypoint', {
- 'a|lib/test.html': '<!DOCTYPE html><html>'
- '<script type="application/dart" src="a.dart">'
- '</script>\n'
- '<script type="application/dart" src="b.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- }, ['warning: ${ONLY_ONE_TAG.snippet} (lib/test.html 1 0)',]);
-
- _testLinter('tags inside elements', {
- 'a|web/test.html': '<!DOCTYPE html><html>'
- '<link rel="import" href="packages/polymer/polymer.html">'
- '<polymer-element name="x-a">'
- '<script type="application/dart" src="a.dart">'
- '</script>'
- '</polymer-element>\n'
- '<script type="application/dart" src="b.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>',
- }, ['warning: ${ONLY_ONE_TAG.snippet} (web/test.html 1 0)',]);
- });
-
- group('doctype warning', () {
- _testLinter('in web', {'a|web/test.html': '<html></html>',}, [
- 'warning: (from html) Unexpected start tag (html). '
- 'Expected DOCTYPE. (web/test.html 0 0)',
- 'warning: ${MISSING_INIT_POLYMER.snippet}',
- ]);
-
- _testLinter('in lib', {'a|lib/test.html': '<html></html>',}, []);
- });
-
- group('duplicate polymer-elements,', () {
- _testLinter('same file', {
- 'a|lib/test.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"></polymer-element>
- <polymer-element name="x-a"></polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, [
- 'warning: ${DUPLICATE_DEFINITION.create(
- {'name': 'x-a', 'second': ''}).snippet} (lib/test.html 2 0)',
- 'warning: ${DUPLICATE_DEFINITION.create(
- {'name': 'x-a', 'second': ' (second definition).'}).snippet} '
- '(lib/test.html 3 0)',
- ]);
-
- _testLinter('other file', {
- 'a|lib/b.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"></polymer-element>
- </html>'''.replaceAll(' ', ''),
- 'a|lib/test.html': '''<html>
- <link rel="import" href="b.html">
- <polymer-element name="x-a"></polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, [
- 'warning: ${DUPLICATE_DEFINITION.create(
- {'name': 'x-a', 'second': ''}).snippet} (lib/b.html 2 0)',
- 'warning: ${DUPLICATE_DEFINITION.create(
- {'name': 'x-a', 'second': ' (second definition).'}).snippet} '
- '(lib/test.html 2 0)',
- ]);
-
- _testLinter('non existing file', {
- 'a|lib/test.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <link rel="import" href="b.html">
- <polymer-element name="x-a"></polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, [
- 'warning: ${IMPORT_NOT_FOUND.create(
- {'path': 'lib/b.html', 'package': 'a'}).snippet} '
- '(lib/test.html 2 0)'
- ]);
-
- _testLinter('other package', {
- 'b|lib/b.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"></polymer-element>
- </html>'''.replaceAll(' ', ''),
- 'a|lib/test.html': '''<html>
- <link rel="import" href="../../packages/b/b.html">
- <polymer-element name="x-a"></polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, [
- 'warning: ${DUPLICATE_DEFINITION.create(
- {'name': 'x-a', 'second': ''}).snippet} (package:b/b.html 2 0)',
- 'warning: ${DUPLICATE_DEFINITION.create(
- {'name': 'x-a', 'second': ' (second definition).'}).snippet} '
- '(lib/test.html 2 0)',
- ]);
- });
-
- _testLinter('bad link-rel tag (href missing)', {
- 'a|lib/test.html': '''<html>
- <link rel="import">
- <link rel="stylesheet">
- <link rel="foo">
- <link rel="import" href="">
- </html>'''.replaceAll(' ', ''),
- }, [
- 'warning: ${MISSING_HREF.create({'rel': 'import'}).snippet} '
- '(lib/test.html 1 0)',
- 'warning: ${MISSING_HREF.create({'rel': 'stylesheet'}).snippet} '
- '(lib/test.html 2 0)',
- 'warning: ${MISSING_HREF.create({'rel': 'import'}).snippet} '
- '(lib/test.html 4 0)',
- ]);
-
- _testLinter('<element> is not supported', {
- 'a|lib/test.html': '''<html>
- <element name="x-a"></element>
- </html>'''.replaceAll(' ', ''),
- }, ['warning: ${ELEMENT_DEPRECATED_EONS_AGO.snippet} (lib/test.html 1 0)']);
-
- _testLinter('do not nest <polymer-element>', {
- 'a|lib/test.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a">
- <template><div>
- <polymer-element name="b"></polymer-element>
- </div></template>
- </polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, ['error: ${NESTED_POLYMER_ELEMENT.snippet} (lib/test.html 4 4)']);
-
- _testLinter('do put import inside <polymer-element>', {
- 'a|lib/b.html': '<html></html>',
- 'a|lib/test.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a">
- <link rel="import" href="b.html">
- <template><div>
- </div></template>
- </polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, ['error: ${NO_IMPORT_WITHIN_ELEMENT.snippet} (lib/test.html 3 2)']);
-
- _testLinter('need a name for <polymer-element>', {
- 'a|lib/test.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element></polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, ['error: ${MISSING_TAG_NAME.snippet} (lib/test.html 2 0)']);
-
- _testLinter('name for <polymer-element> should have dashes', {
- 'a|lib/test.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="a"></polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, [
- 'error: ${INVALID_TAG_NAME.create({'name': 'a'}).snippet} '
- '(lib/test.html 2 0)'
- ]);
-
- _testLinter('extend is a valid element or existing tag', {
- 'a|web/test.html': '''<!DOCTYPE html><html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a" extends="li"></polymer-element>
- <script type="application/dart">
- export 'package:polymer/init.dart';
- </script>
- </html>'''.replaceAll(' ', ''),
- }, []);
-
- _testLinter('extend is a valid element or existing tag', {
- 'a|web/test.html': '''<!DOCTYPE html><html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a" extends="x-b"></polymer-element>
- <script type="application/dart">
- export 'package:polymer/init.dart';
- </script>
- </html>'''.replaceAll(' ', ''),
- }, [
- 'warning: ${CUSTOM_ELEMENT_NOT_FOUND.create({'tag': 'x-b'}).snippet} '
- '(web/test.html 2 0)'
- ]);
-
- group('script type matches code', () {
- _testLinter('top-level, .dart url', {
- 'a|lib/test.html': '''<html>
- <script src="foo.dart"></script>
- </html>'''.replaceAll(' ', ''),
- }, [
- 'warning: Wrong script type, expected type="application/dart".'
- ' (lib/test.html 1 0)'
- ]);
-
- _testLinter('in polymer-element, .dart url', {
- 'a|lib/test.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a">
- <script src="foo.dart"></script>
- </polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, ['warning: ${EXPECTED_DART_MIME_TYPE.snippet} (lib/test.html 3 0)']);
-
- _testLinter('in polymer-element, .js url', {
- 'a|lib/test.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a">
- <script src="foo.js"></script>
- </polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, []);
-
- _testLinter('in polymer-element, inlined', {
- 'a|lib/test.html': '''<html>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a">
- <script>foo...</script>
- </polymer-element>
- </html>'''.replaceAll(' ', ''),
- }, []);
-
- _testLinter('top-level, dart type & .dart url', {
- 'a|lib/test.html': '''<html>
- <script type="application/dart" src="foo.dart"></script>
- </html>'''.replaceAll(' ', ''),
- }, []);
-
- _testLinter('top-level, dart type & .js url', {
- 'a|lib/test.html': '''<html>
- <script type="application/dart" src="foo.js"></script>
- </html>'''.replaceAll(' ', ''),
- }, ['warning: ${EXPECTED_DART_EXTENSION.snippet} (lib/test.html 1 0)']);
- });
-
- _testLinter('script tags should have at least src url or inline code', {
- 'a|lib/test.html': '''<html>
- <script type="application/dart"></script>
- </html>'''.replaceAll(' ', ''),
- }, ['warning: ${SCRIPT_TAG_SEEMS_EMPTY.snippet} (lib/test.html 1 0)']);
-
- _testLinter('script tags should have only src url or inline code', {
- 'a|lib/test.html': '''<html>
- <script type="application/dart" src="foo.dart">more</script>
- </html>'''.replaceAll(' ', ''),
- }, [
- 'warning: ${FOUND_BOTH_SCRIPT_SRC_AND_TEXT.snippet} (lib/test.html 1 0)'
- ]);
-
- group('event handlers', () {
- _testLinter('no longer warn about inline onfoo (Javascript)', {
- 'a|lib/test.html': '''<html><body>
- <div onfoo="something"></div>
- '''.replaceAll(' ', ''),
- }, []);
-
- _testLinter('no longer warn about on-foo for auto-binding templates', {
- 'a|lib/test.html': '''<html><body>
- <template is="auto-binding-dart">
- <div on-foo="{{something}}"></div>
- <template>
- <div>foo</div>
- </template>
- <div on-foo="{{something}}"></div>
- </template>
- '''.replaceAll(' ', ''),
- }, []);
-
- _testLinter('on-foo is only supported in polymer elements', {
- 'a|lib/test.html': '''<html><body>
- <div on-foo="{{something}}"></div>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${EVENT_HANDLERS_ONLY_WITHIN_POLYMER.snippet} '
- '(lib/test.html 1 5)'
- ]);
-
- _testLinter('on-foo uses the {{ binding }} syntax', {
- 'a|lib/test.html': '''<html><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"><div on-foo="bar"></div>
- </polymer-element>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${INVALID_EVENT_HANDLER_BODY.create(
- {'value': 'bar', 'name': 'on-foo'}).snippet} (lib/test.html 2 33)'
- ]);
-
- _testLinter('on-foo is not an expression', {
- 'a|lib/test.html': '''<html><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"><div on-foo="{{bar()}}"></div>
- </polymer-element>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${INVALID_EVENT_HANDLER_BODY.create(
- {'value': '{{bar()}}', 'name': 'on-foo'}).snippet} '
- '(lib/test.html 2 33)'
- ]);
-
- _testLinter('on-foo can\'t be empty', {
- 'a|lib/test.html': '''<html><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"><div on-foo="{{}}"></div>
- </polymer-element>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${INVALID_EVENT_HANDLER_BODY.create(
- {'value': '{{}}', 'name': 'on-foo'}).snippet} (lib/test.html 2 33)'
- ]);
-
- _testLinter('on-foo can\'t be just space', {
- 'a|lib/test.html': '''<html><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"><div on-foo="{{ }}"></div>
- </polymer-element>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${INVALID_EVENT_HANDLER_BODY.create(
- {'value': '{{ }}', 'name': 'on-foo'}).snippet} (lib/test.html 2 33)'
- ]);
-
- _testLinter('on-foo-bar is supported as a custom event name', {
- 'a|lib/test.html': '''<html><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"><div on-foo-bar="{{quux}}"></div>
- </polymer-element>
- '''.replaceAll(' ', ''),
- }, []);
- });
-
- group('using custom tags', () {
- _testLinter('tag exists (x-tag)', {
- 'a|web/test.html': '''<!DOCTYPE html>
- <x-foo></x-foo>
- <script type="application/dart">
- export 'package:polymer/init.dart';
- </script>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${CUSTOM_ELEMENT_NOT_FOUND.create({'tag': 'x-foo'}).snippet} '
- '(web/test.html 1 0)'
- ]);
-
- _testLinter('tag exists (type extension)', {
- 'a|web/test.html': '''<!DOCTYPE html>
- <div is="x-foo"></div>
- <script type="application/dart">
- export 'package:polymer/init.dart';
- </script>'''.replaceAll(' ', ''),
- }, [
- 'warning: ${CUSTOM_ELEMENT_NOT_FOUND.create({'tag': 'x-foo'}).snippet} '
- '(web/test.html 1 0)',
- ]);
-
- _testLinter('tag exists (internally defined in code)', {
- 'a|lib/test.html': '<div is="auto-binding-dart"></div>',
- }, []);
-
- _testLinter('used correctly (no base tag)', {
- 'a|lib/test.html': '''
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"></polymer-element>
- <x-a></x-a>
- '''.replaceAll(' ', ''),
- }, []);
-
- _testLinter('used incorrectly (no base tag)', {
- 'a|lib/test.html': '''
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"></polymer-element>
- <div is="x-a"></div>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${BAD_INSTANTIATION_BOGUS_BASE_TAG.create(
- {'tag': 'x-a', 'base': 'div'}).snippet} (lib/test.html 2 0)'
- ]);
-
- _testLinter('used incorrectly, imported def (no base tag)', {
- 'a|lib/b.html': '''
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a"></polymer-element>''',
- 'a|lib/test.html': '''
- <link rel="import" href="b.html">
- <div is="x-a"></div>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${BAD_INSTANTIATION_BOGUS_BASE_TAG.create(
- {'tag': 'x-a', 'base': 'div'}).snippet} (lib/test.html 1 0)'
- ]);
-
- _testLinter('used correctly (base tag)', {
- 'a|lib/b.html': '''
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a" extends="div">
- </polymer-element>
- '''.replaceAll(' ', ''),
- 'a|lib/test.html': '''
- <link rel="import" href="b.html">
- <div is="x-a"></div>
- '''.replaceAll(' ', ''),
- }, []);
-
- _testLinter('used incorrectly (missing base tag)', {
- 'a|lib/b.html': '''
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a" extends="div">
- </polymer-element>
- '''.replaceAll(' ', ''),
- 'a|lib/test.html': '''
- <link rel="import" href="b.html">
- <x-a></x-a>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${BAD_INSTANTIATION_MISSING_BASE_TAG.create(
- {'tag': 'x-a', 'base': 'div'}).snippet} (lib/test.html 1 0)'
- ]);
-
- _testLinter('used incorrectly (wrong base tag)', {
- 'a|lib/b.html': '''
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a" extends="div">
- </polymer-element>
- '''.replaceAll(' ', ''),
- 'a|lib/test.html': '''
- <link rel="import" href="b.html">
- <span is="x-a"></span>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${BAD_INSTANTIATION_WRONG_BASE_TAG.create(
- {'tag': 'x-a', 'base': 'div'}).snippet} (lib/test.html 1 0)'
- ]);
-
- _testLinter('used incorrectly (wrong base tag, transitive)', {
- 'a|lib/c.html': '''
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-c" extends="li">
- </polymer-element>
- <polymer-element name="x-b" extends="x-c">
- </polymer-element>
- '''.replaceAll(' ', ''),
- 'a|lib/b.html': '''
- <link rel="import" href="../../packages/polymer/polymer.html">
- <link rel="import" href="c.html">
- <polymer-element name="x-a" extends="x-b">
- </polymer-element>
- '''.replaceAll(' ', ''),
- 'a|lib/test.html': '''
- <link rel="import" href="../../packages/polymer/polymer.html">
- <link rel="import" href="b.html">
- <span is="x-a"></span>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${BAD_INSTANTIATION_WRONG_BASE_TAG.create(
- {'tag': 'x-a', 'base': 'li'}).snippet} (lib/test.html 2 0)'
- ]);
-
- _testLinter('FOUC warning works', {
- 'a|web/a.html': '''
- <!DOCTYPE html>
- <html><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="my-element" noscript></polymer-element>
- <my-element>hello!</my-element>
- <script type="application/dart">
- export "package:polymer/init.dart";
- </script>
- </body></html>
- ''',
- 'a|web/b.html': '''
- <!DOCTYPE html>
- <html><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="my-element" noscript></polymer-element>
- <div><my-element>hello!</my-element></div>
- <script type="application/dart">
- export "package:polymer/init.dart";
- </script>
- </body></html>
- ''',
- 'a|web/c.html': '''
- <!DOCTYPE html>
- <html unresolved><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="my-element" noscript></polymer-element>
- <my-element>hello!</my-element>
- <script type="application/dart">
- export "package:polymer/init.dart";
- </script>
- </body></html>
- '''
- }, [
- 'warning: ${POSSIBLE_FUOC.snippet} (web/a.html 4 14)',
- 'warning: ${POSSIBLE_FUOC.snippet} (web/b.html 4 19)',
- 'warning: ${POSSIBLE_FUOC.snippet} (web/c.html 4 14)',
- ]);
-
- _testLinter('FOUC, no false positives.', {
- // Parent has unresolved attribute.
- 'a|web/a.html': '''
- <!DOCTYPE html>
- <html><body>
- <div unresolved>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="my-element" noscript></polymer-element>
- <my-element>hello!</my-element>
- </div>
- <script type="application/dart">
- export "package:polymer/init.dart";
- </script>
- </body></html>
- ''',
- // Body has unresolved attribute.
- 'a|web/b.html': '''
- <!DOCTYPE html>
- <html><body unresolved>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="my-element" noscript></polymer-element>
- <my-element>hello!</my-element>
- <script type="application/dart">
- export "package:polymer/init.dart";
- </script>
- </body></html>
- ''',
- // Inside polymer-element tags its fine.
- 'a|web/c.html': '''
- <!DOCTYPE html>
- <html><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="my-element" noscript></polymer-element>
- <polymer-element name="foo-element">
- <template><my-element>hello!</my-element></template>
- </polymer-element>
- <script type="application/dart">
- export "package:polymer/init.dart";
- </script>
- </body></html>
- ''',
- // Empty custom elements are fine.
- 'a|web/d.html': '''
- <!DOCTYPE html>
- <html><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="my-element" noscript></polymer-element>
- <my-element></my-element>
- <script type="application/dart">
- export "package:polymer/init.dart";
- </script>
- </body></html>
- ''',
- // Entry points only!
- 'a|lib/a.html': '''
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="my-element" noscript></polymer-element>
- <my-element>hello!</my-element>
- ''',
- }, []);
- });
-
- group('custom attributes', () {
- _testLinter('foo-bar is no longer supported in attributes', {
- 'a|lib/test.html': '''<html><body>
- <link rel="import" href="../../packages/polymer/polymer.html">
- <polymer-element name="x-a" attributes="foo-bar">
- </polymer-element>
- '''.replaceAll(' ', ''),
- }, [
- 'warning: ${NO_DASHES_IN_CUSTOM_ATTRIBUTES.create(
- {'name': 'foo-bar', 'alternative': '"fooBar" or "foobar"'})
- .snippet} (lib/test.html 2 28)'
- ]);
- });
-
- _testLinter("namespaced attributes don't cause an internal error", {
- 'a|lib/test.html': '''<html><body>
- <svg xmlns="http://www.w3.org/2000/svg" width="520" height="350">
- </svg>
- '''.replaceAll(' ', ''),
- }, []);
-
- group('output logs to file', () {
- final outputLogsPhases = [
- [
- new Linter(new TransformOptions(
- injectBuildLogsInOutput: true, releaseMode: false))
- ]
- ];
-
- testPhases("logs are output to file", outputLogsPhases, {
- 'a|web/test.html': '<!DOCTYPE html><html>\n'
- '<polymer-element name="x-a"></polymer-element>'
- '<script type="application/dart" src="foo.dart">'
- '</script>'
- '<script src="packages/browser/dart.js"></script>'
- '</html>',
- }, {
- 'a|web/test.html._buildLogs.1': '{"polymer#3":[{'
- '"level":"Warning",'
- '"message":{'
- '"id":"polymer#3",'
- '"snippet":"${_usePolymerHtmlMessage(0).replaceAll('"','\\"')}"'
- '},'
- '"span":{'
- '"start":{'
- '"url":"web/test.html",'
- '"offset":22,'
- '"line":1,'
- '"column":0'
- '},'
- '"end":{'
- '"url":"web/test.html",'
- '"offset":50,'
- '"line":1,'
- '"column":28'
- '},'
- '"text":"<polymer-element name=\\"x-a\\">"'
- '}'
- '}]}',
- }, [
- // Logs should still make it to barback too.
- 'warning: ${_usePolymerHtmlMessage(0)} (web/test.html 1 0)',
- ]);
- });
-}
-
-_usePolymerHtmlMessage(int i) {
- var prefix = '../' * i;
- return USE_POLYMER_HTML.create({'reachOutPrefix': prefix}).snippet;
-}
-
-_testLinter(String name, Map inputFiles, List outputMessages,
- [bool solo = false]) {
- var outputFiles = {};
- if (outputMessages.every((m) => m.startsWith('warning:'))) {
- inputFiles.forEach((k, v) => outputFiles[k] = v);
- }
- if (outputMessages.isEmpty) {
- var linter = new Linter(new TransformOptions());
- testPhases(name, [[linter]], inputFiles, outputFiles, outputMessages, solo);
- } else {
- testLogOutput((options) => new Linter(options), name, inputFiles,
- outputFiles, outputMessages, solo);
- }
-}
« no previous file with comments | « packages/polymer/test/build/index_page_builder_test.dart ('k') | packages/polymer/test/build/log_injector_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698