diff options
Diffstat (limited to 'tools/closure_linter-2.3.4/closure_linter/fixjsstyle_test.py')
-rwxr-xr-x | tools/closure_linter-2.3.4/closure_linter/fixjsstyle_test.py | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/tools/closure_linter-2.3.4/closure_linter/fixjsstyle_test.py b/tools/closure_linter-2.3.4/closure_linter/fixjsstyle_test.py new file mode 100755 index 0000000..d413998 --- /dev/null +++ b/tools/closure_linter-2.3.4/closure_linter/fixjsstyle_test.py @@ -0,0 +1,188 @@ +#!/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 checker +from closure_linter import error_fixer + +_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 testFixJsStyle(self): + input_filename = None + try: + input_filename = '%s/fixjsstyle.in.js' % (_RESOURCE_PREFIX) + + golden_filename = '%s/fixjsstyle.out.js' % (_RESOURCE_PREFIX) + except IOError, ex: + raise IOError('Could not find testdata resource for %s: %s' % + (self._filename, ex)) + + with open(input_filename) as f: + for line in f: + # Go to last line. + pass + self.assertTrue(line == line.rstrip(), 'fixjsstyle.js should not end ' + 'with a new line.') + + # Autofix the file, sending output to a fake file. + actual = StringIO.StringIO() + style_checker = checker.JavaScriptStyleChecker( + error_fixer.ErrorFixer(actual)) + style_checker.Check(input_filename) + + # Now compare the files. + actual.seek(0) + expected = open(golden_filename, 'r') + + self.assertEqual(actual.readlines(), expected.readlines()) + + 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 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 _AssertFixes(self, original, expected): + """Asserts that the error fixer corrects original to expected.""" + original = self._GetHeader() + original + expected = self._GetHeader() + expected + + actual = StringIO.StringIO() + style_checker = checker.JavaScriptStyleChecker( + error_fixer.ErrorFixer(actual)) + style_checker.CheckLines('testing.js', original, False) + 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() |