| Index: third_party/closure_linter/closure_linter/fixjsstyle_test.py
|
| diff --git a/third_party/closure_linter/closure_linter/fixjsstyle_test.py b/third_party/closure_linter/closure_linter/fixjsstyle_test.py
|
| deleted file mode 100755
|
| index 34de3f8488d35186b75b5128bdcff010fdc327b3..0000000000000000000000000000000000000000
|
| --- a/third_party/closure_linter/closure_linter/fixjsstyle_test.py
|
| +++ /dev/null
|
| @@ -1,615 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright 2008 The Closure Linter Authors. All Rights Reserved.
|
| -#
|
| -# Licensed under the Apache License, Version 2.0 (the "License");
|
| -# you may not use this file except in compliance with the License.
|
| -# You may obtain a copy of the License at
|
| -#
|
| -# http://www.apache.org/licenses/LICENSE-2.0
|
| -#
|
| -# Unless required by applicable law or agreed to in writing, software
|
| -# distributed under the License is distributed on an "AS-IS" BASIS,
|
| -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -# See the License for the specific language governing permissions and
|
| -# limitations under the License.
|
| -
|
| -"""Medium tests for the gpylint auto-fixer."""
|
| -
|
| -__author__ = 'robbyw@google.com (Robby Walker)'
|
| -
|
| -import StringIO
|
| -
|
| -import gflags as flags
|
| -import unittest as googletest
|
| -from closure_linter import error_fixer
|
| -from closure_linter import runner
|
| -
|
| -
|
| -_RESOURCE_PREFIX = 'closure_linter/testdata'
|
| -
|
| -flags.FLAGS.strict = True
|
| -flags.FLAGS.limited_doc_files = ('dummy.js', 'externs.js')
|
| -flags.FLAGS.closurized_namespaces = ('goog', 'dummy')
|
| -
|
| -
|
| -class FixJsStyleTest(googletest.TestCase):
|
| - """Test case to for gjslint auto-fixing."""
|
| -
|
| - def setUp(self):
|
| - flags.FLAGS.dot_on_next_line = True
|
| -
|
| - def tearDown(self):
|
| - flags.FLAGS.dot_on_next_line = False
|
| -
|
| - def testFixJsStyle(self):
|
| - test_cases = [
|
| - ['fixjsstyle.in.js', 'fixjsstyle.out.js'],
|
| - ['indentation.js', 'fixjsstyle.indentation.out.js'],
|
| - ['fixjsstyle.html.in.html', 'fixjsstyle.html.out.html'],
|
| - ['fixjsstyle.oplineend.in.js', 'fixjsstyle.oplineend.out.js']]
|
| - for [running_input_file, running_output_file] in test_cases:
|
| - print 'Checking %s vs %s' % (running_input_file, running_output_file)
|
| - input_filename = None
|
| - golden_filename = None
|
| - current_filename = None
|
| - try:
|
| - input_filename = '%s/%s' % (_RESOURCE_PREFIX, running_input_file)
|
| - current_filename = input_filename
|
| -
|
| - golden_filename = '%s/%s' % (_RESOURCE_PREFIX, running_output_file)
|
| - current_filename = golden_filename
|
| - except IOError as ex:
|
| - raise IOError('Could not find testdata resource for %s: %s' %
|
| - (current_filename, ex))
|
| -
|
| - if running_input_file == 'fixjsstyle.in.js':
|
| - with open(input_filename) as f:
|
| - for line in f:
|
| - # Go to last line.
|
| - pass
|
| - self.assertTrue(line == line.rstrip(), '%s file should not end '
|
| - 'with a new line.' % (input_filename))
|
| -
|
| - # Autofix the file, sending output to a fake file.
|
| - actual = StringIO.StringIO()
|
| - runner.Run(input_filename, error_fixer.ErrorFixer(actual))
|
| -
|
| - # Now compare the files.
|
| - actual.seek(0)
|
| - expected = open(golden_filename, 'r')
|
| -
|
| - # Uncomment to generate new golden files and run
|
| - # open('/'.join(golden_filename.split('/')[4:]), 'w').write(actual.read())
|
| - # actual.seek(0)
|
| -
|
| - self.assertEqual(actual.readlines(), expected.readlines())
|
| -
|
| - def testAddProvideFirstLine(self):
|
| - """Tests handling of case where goog.provide is added."""
|
| - original = [
|
| - 'dummy.bb.cc = 1;',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'dummy.bb\');',
|
| - '',
|
| - 'dummy.bb.cc = 1;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - original = [
|
| - '',
|
| - 'dummy.bb.cc = 1;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testAddRequireFirstLine(self):
|
| - """Tests handling of case where goog.require is added."""
|
| - original = [
|
| - 'a = dummy.bb.cc;',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.require(\'dummy.bb\');',
|
| - '',
|
| - 'a = dummy.bb.cc;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - original = [
|
| - '',
|
| - 'a = dummy.bb.cc;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testDeleteProvideAndAddProvideFirstLine(self):
|
| - """Tests handling of case where goog.provide is deleted and added.
|
| -
|
| - Bug 14832597.
|
| - """
|
| - original = [
|
| - 'goog.provide(\'dummy.aa\');',
|
| - '',
|
| - 'dummy.bb.cc = 1;',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'dummy.bb\');',
|
| - '',
|
| - 'dummy.bb.cc = 1;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - original = [
|
| - 'goog.provide(\'dummy.aa\');',
|
| - 'dummy.bb.cc = 1;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testDeleteProvideAndAddRequireFirstLine(self):
|
| - """Tests handling where goog.provide is deleted and goog.require added.
|
| -
|
| - Bug 14832597.
|
| - """
|
| - original = [
|
| - 'goog.provide(\'dummy.aa\');',
|
| - '',
|
| - 'a = dummy.bb.cc;',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.require(\'dummy.bb\');',
|
| - '',
|
| - 'a = dummy.bb.cc;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - original = [
|
| - 'goog.provide(\'dummy.aa\');',
|
| - 'a = dummy.bb.cc;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testDeleteRequireAndAddRequireFirstLine(self):
|
| - """Tests handling of case where goog.require is deleted and added.
|
| -
|
| - Bug 14832597.
|
| - """
|
| - original = [
|
| - 'goog.require(\'dummy.aa\');',
|
| - '',
|
| - 'a = dummy.bb.cc;',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.require(\'dummy.bb\');',
|
| - '',
|
| - 'a = dummy.bb.cc;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - original = [
|
| - 'goog.require(\'dummy.aa\');',
|
| - 'a = dummy.bb.cc;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testDeleteRequireAndAddProvideFirstLine(self):
|
| - """Tests handling where goog.require is deleted and goog.provide added.
|
| -
|
| - Bug 14832597.
|
| - """
|
| - original = [
|
| - 'goog.require(\'dummy.aa\');',
|
| - '',
|
| - 'dummy.bb.cc = 1;',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'dummy.bb\');',
|
| - '',
|
| - 'dummy.bb.cc = 1;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - original = [
|
| - 'goog.require(\'dummy.aa\');',
|
| - 'dummy.bb.cc = 1;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testMultipleProvideInsert(self):
|
| - original = [
|
| - 'goog.provide(\'dummy.bb\');',
|
| - 'goog.provide(\'dummy.dd\');',
|
| - '',
|
| - 'dummy.aa.ff = 1;',
|
| - 'dummy.bb.ff = 1;',
|
| - 'dummy.cc.ff = 1;',
|
| - 'dummy.dd.ff = 1;',
|
| - 'dummy.ee.ff = 1;',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'dummy.aa\');',
|
| - 'goog.provide(\'dummy.bb\');',
|
| - 'goog.provide(\'dummy.cc\');',
|
| - 'goog.provide(\'dummy.dd\');',
|
| - 'goog.provide(\'dummy.ee\');',
|
| - '',
|
| - 'dummy.aa.ff = 1;',
|
| - 'dummy.bb.ff = 1;',
|
| - 'dummy.cc.ff = 1;',
|
| - 'dummy.dd.ff = 1;',
|
| - 'dummy.ee.ff = 1;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testMultipleRequireInsert(self):
|
| - original = [
|
| - 'goog.require(\'dummy.bb\');',
|
| - 'goog.require(\'dummy.dd\');',
|
| - '',
|
| - 'a = dummy.aa.ff;',
|
| - 'b = dummy.bb.ff;',
|
| - 'c = dummy.cc.ff;',
|
| - 'd = dummy.dd.ff;',
|
| - 'e = dummy.ee.ff;',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.require(\'dummy.aa\');',
|
| - 'goog.require(\'dummy.bb\');',
|
| - 'goog.require(\'dummy.cc\');',
|
| - 'goog.require(\'dummy.dd\');',
|
| - 'goog.require(\'dummy.ee\');',
|
| - '',
|
| - 'a = dummy.aa.ff;',
|
| - 'b = dummy.bb.ff;',
|
| - 'c = dummy.cc.ff;',
|
| - 'd = dummy.dd.ff;',
|
| - 'e = dummy.ee.ff;',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testUnsortedRequires(self):
|
| - """Tests handling of unsorted goog.require statements without header.
|
| -
|
| - Bug 8398202.
|
| - """
|
| - original = [
|
| - 'goog.require(\'dummy.aa\');',
|
| - 'goog.require(\'dummy.Cc\');',
|
| - 'goog.require(\'dummy.Dd\');',
|
| - '',
|
| - 'function a() {',
|
| - ' dummy.aa.i = 1;',
|
| - ' dummy.Cc.i = 1;',
|
| - ' dummy.Dd.i = 1;',
|
| - '}',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.require(\'dummy.Cc\');',
|
| - 'goog.require(\'dummy.Dd\');',
|
| - 'goog.require(\'dummy.aa\');',
|
| - '',
|
| - 'function a() {',
|
| - ' dummy.aa.i = 1;',
|
| - ' dummy.Cc.i = 1;',
|
| - ' dummy.Dd.i = 1;',
|
| - '}',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testMissingExtraAndUnsortedRequires(self):
|
| - """Tests handling of missing extra and unsorted goog.require statements."""
|
| - original = [
|
| - 'goog.require(\'dummy.aa\');',
|
| - 'goog.require(\'dummy.Cc\');',
|
| - 'goog.require(\'dummy.Dd\');',
|
| - '',
|
| - 'var x = new dummy.Bb();',
|
| - 'dummy.Cc.someMethod();',
|
| - 'dummy.aa.someMethod();',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.require(\'dummy.Bb\');',
|
| - 'goog.require(\'dummy.Cc\');',
|
| - 'goog.require(\'dummy.aa\');',
|
| - '',
|
| - 'var x = new dummy.Bb();',
|
| - 'dummy.Cc.someMethod();',
|
| - 'dummy.aa.someMethod();',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected)
|
| -
|
| - def testExtraRequireOnFirstLine(self):
|
| - """Tests handling of extra goog.require statement on the first line.
|
| -
|
| - There was a bug when fixjsstyle quits with an exception. It happened if
|
| - - the first line of the file is an extra goog.require() statement,
|
| - - goog.require() statements are not sorted.
|
| - """
|
| - original = [
|
| - 'goog.require(\'dummy.aa\');',
|
| - 'goog.require(\'dummy.cc\');',
|
| - 'goog.require(\'dummy.bb\');',
|
| - '',
|
| - 'var x = new dummy.bb();',
|
| - 'var y = new dummy.cc();',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.require(\'dummy.bb\');',
|
| - 'goog.require(\'dummy.cc\');',
|
| - '',
|
| - 'var x = new dummy.bb();',
|
| - 'var y = new dummy.cc();',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testUnsortedProvides(self):
|
| - """Tests handling of unsorted goog.provide statements without header.
|
| -
|
| - Bug 8398202.
|
| - """
|
| - original = [
|
| - 'goog.provide(\'dummy.aa\');',
|
| - 'goog.provide(\'dummy.Cc\');',
|
| - 'goog.provide(\'dummy.Dd\');',
|
| - '',
|
| - 'dummy.aa = function() {};'
|
| - 'dummy.Cc = function() {};'
|
| - 'dummy.Dd = function() {};'
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'dummy.Cc\');',
|
| - 'goog.provide(\'dummy.Dd\');',
|
| - 'goog.provide(\'dummy.aa\');',
|
| - '',
|
| - 'dummy.aa = function() {};'
|
| - 'dummy.Cc = function() {};'
|
| - 'dummy.Dd = function() {};'
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testMissingExtraAndUnsortedProvides(self):
|
| - """Tests handling of missing extra and unsorted goog.provide statements."""
|
| - original = [
|
| - 'goog.provide(\'dummy.aa\');',
|
| - 'goog.provide(\'dummy.Cc\');',
|
| - 'goog.provide(\'dummy.Dd\');',
|
| - '',
|
| - 'dummy.Cc = function() {};',
|
| - 'dummy.Bb = function() {};',
|
| - 'dummy.aa.someMethod = function();',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'dummy.Bb\');',
|
| - 'goog.provide(\'dummy.Cc\');',
|
| - 'goog.provide(\'dummy.aa\');',
|
| - '',
|
| - 'dummy.Cc = function() {};',
|
| - 'dummy.Bb = function() {};',
|
| - 'dummy.aa.someMethod = function();',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected)
|
| -
|
| - def testNoRequires(self):
|
| - """Tests positioning of missing requires without existing requires."""
|
| - original = [
|
| - 'goog.provide(\'dummy.Something\');',
|
| - '',
|
| - 'dummy.Something = function() {};',
|
| - '',
|
| - 'var x = new dummy.Bb();',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'dummy.Something\');',
|
| - '',
|
| - 'goog.require(\'dummy.Bb\');',
|
| - '',
|
| - 'dummy.Something = function() {};',
|
| - '',
|
| - 'var x = new dummy.Bb();',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected)
|
| -
|
| - def testNoProvides(self):
|
| - """Tests positioning of missing provides without existing provides."""
|
| - original = [
|
| - 'goog.require(\'dummy.Bb\');',
|
| - '',
|
| - 'dummy.Something = function() {};',
|
| - '',
|
| - 'var x = new dummy.Bb();',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'dummy.Something\');',
|
| - '',
|
| - 'goog.require(\'dummy.Bb\');',
|
| - '',
|
| - 'dummy.Something = function() {};',
|
| - '',
|
| - 'var x = new dummy.Bb();',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected)
|
| -
|
| - def testOutputOkayWhenFirstTokenIsDeleted(self):
|
| - """Tests that autofix output is is correct when first token is deleted.
|
| -
|
| - Regression test for bug 4581567
|
| - """
|
| - original = ['"use strict";']
|
| - expected = ["'use strict';"]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testGoogScopeIndentation(self):
|
| - """Tests Handling a typical end-of-scope indentation fix."""
|
| - original = [
|
| - 'goog.scope(function() {',
|
| - ' // TODO(brain): Take over the world.',
|
| - '}); // goog.scope',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.scope(function() {',
|
| - '// TODO(brain): Take over the world.',
|
| - '}); // goog.scope',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected)
|
| -
|
| - def testMissingEndOfScopeComment(self):
|
| - """Tests Handling a missing comment at end of goog.scope."""
|
| - original = [
|
| - 'goog.scope(function() {',
|
| - '});',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.scope(function() {',
|
| - '}); // goog.scope',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected)
|
| -
|
| - def testMissingEndOfScopeCommentWithOtherComment(self):
|
| - """Tests handling an irrelevant comment at end of goog.scope."""
|
| - original = [
|
| - 'goog.scope(function() {',
|
| - "}); // I don't belong here!",
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.scope(function() {',
|
| - '}); // goog.scope',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected)
|
| -
|
| - def testMalformedEndOfScopeComment(self):
|
| - """Tests Handling a malformed comment at end of goog.scope."""
|
| - original = [
|
| - 'goog.scope(function() {',
|
| - '}); // goog.scope FTW',
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.scope(function() {',
|
| - '}); // goog.scope',
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected)
|
| -
|
| - def testEndsWithIdentifier(self):
|
| - """Tests Handling case where script ends with identifier. Bug 7643404."""
|
| - original = [
|
| - 'goog.provide(\'xyz\');',
|
| - '',
|
| - 'abc'
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'xyz\');',
|
| - '',
|
| - 'abc;'
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected)
|
| -
|
| - def testFileStartsWithSemicolon(self):
|
| - """Tests handling files starting with semicolon.
|
| -
|
| - b/10062516
|
| - """
|
| - original = [
|
| - ';goog.provide(\'xyz\');',
|
| - '',
|
| - 'abc;'
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'xyz\');',
|
| - '',
|
| - 'abc;'
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected, include_header=False)
|
| -
|
| - def testCodeStartsWithSemicolon(self):
|
| - """Tests handling code in starting with semicolon after comments.
|
| -
|
| - b/10062516
|
| - """
|
| - original = [
|
| - ';goog.provide(\'xyz\');',
|
| - '',
|
| - 'abc;'
|
| - ]
|
| -
|
| - expected = [
|
| - 'goog.provide(\'xyz\');',
|
| - '',
|
| - 'abc;'
|
| - ]
|
| -
|
| - self._AssertFixes(original, expected)
|
| -
|
| - def _AssertFixes(self, original, expected, include_header=True):
|
| - """Asserts that the error fixer corrects original to expected."""
|
| - if include_header:
|
| - original = self._GetHeader() + original
|
| - expected = self._GetHeader() + expected
|
| -
|
| - actual = StringIO.StringIO()
|
| - runner.Run('testing.js', error_fixer.ErrorFixer(actual), original)
|
| - actual.seek(0)
|
| -
|
| - expected = [x + '\n' for x in expected]
|
| -
|
| - self.assertListEqual(actual.readlines(), expected)
|
| -
|
| - def _GetHeader(self):
|
| - """Returns a fake header for a JavaScript file."""
|
| - return [
|
| - '// Copyright 2011 Google Inc. All Rights Reserved.',
|
| - '',
|
| - '/**',
|
| - ' * @fileoverview Fake file overview.',
|
| - ' * @author fake@google.com (Fake Person)',
|
| - ' */',
|
| - ''
|
| - ]
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - googletest.main()
|
|
|