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

Unified Diff: third_party/closure_linter/closure_linter/fixjsstyle_test.py

Issue 411243002: closure_linter: 2.3.4 => 2.3.14 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove checker Created 6 years, 5 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: 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
index 5096568ded24af03960f85efe2a79a203c1e8de4..37eca9f1ab1e72fa0dd7affd661baa518dbd72d0 100755
--- a/third_party/closure_linter/closure_linter/fixjsstyle_test.py
+++ b/third_party/closure_linter/closure_linter/fixjsstyle_test.py
@@ -1,5 +1,4 @@
#!/usr/bin/env python
-#
# Copyright 2008 The Closure Linter Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,8 +21,9 @@ import StringIO
import gflags as flags
import unittest as googletest
-from closure_linter import checker
from closure_linter import error_fixer
+from closure_linter import runner
+
_RESOURCE_PREFIX = 'closure_linter/testdata'
@@ -36,8 +36,10 @@ class FixJsStyleTest(googletest.TestCase):
"""Test case to for gjslint auto-fixing."""
def testFixJsStyle(self):
- test_cases = [['fixjsstyle.in.js', 'fixjsstyle.out.js'],
- ['indentation.js', 'fixjsstyle.indentation.out.js']]
+ test_cases = [
+ ['fixjsstyle.in.js', 'fixjsstyle.out.js'],
+ ['indentation.js', 'fixjsstyle.indentation.out.js'],
+ ['fixjsstyle.html.in.html', 'fixjsstyle.html.out.html']]
for [running_input_file, running_output_file] in test_cases:
input_filename = None
golden_filename = None
@@ -48,7 +50,7 @@ class FixJsStyleTest(googletest.TestCase):
golden_filename = '%s/%s' % (_RESOURCE_PREFIX, running_output_file)
current_filename = golden_filename
- except IOError, ex:
+ except IOError as ex:
raise IOError('Could not find testdata resource for %s: %s' %
(current_filename, ex))
@@ -62,9 +64,7 @@ class FixJsStyleTest(googletest.TestCase):
# 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)
+ runner.Run(input_filename, error_fixer.ErrorFixer(actual))
# Now compare the files.
actual.seek(0)
@@ -72,50 +72,134 @@ class FixJsStyleTest(googletest.TestCase):
self.assertEqual(actual.readlines(), expected.readlines())
+ 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();",
+ '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();",
+ '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();",
+ '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();",
+ '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)
@@ -123,21 +207,21 @@ class FixJsStyleTest(googletest.TestCase):
def testNoRequires(self):
"""Tests positioning of missing requires without existing requires."""
original = [
- "goog.provide('dummy.Something');",
- "",
- "dummy.Something = function() {};",
- "",
- "var x = new dummy.Bb();",
+ '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();",
+ 'goog.provide(\'dummy.Something\');',
+ '',
+ 'goog.require(\'dummy.Bb\');',
+ '',
+ 'dummy.Something = function() {};',
+ '',
+ 'var x = new dummy.Bb();',
]
self._AssertFixes(original, expected)
@@ -145,25 +229,35 @@ class FixJsStyleTest(googletest.TestCase):
def testNoProvides(self):
"""Tests positioning of missing provides without existing provides."""
original = [
- "goog.require('dummy.Bb');",
- "",
- "dummy.Something = function() {};",
- "",
- "var x = new dummy.Bb();",
+ '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();",
+ '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 = [
@@ -222,15 +316,68 @@ class FixJsStyleTest(googletest.TestCase):
self._AssertFixes(original, expected)
- def _AssertFixes(self, 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."""
- original = self._GetHeader() + original
- expected = self._GetHeader() + expected
+ if include_header:
+ 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)
+ runner.Run('testing.js', error_fixer.ErrorFixer(actual), original)
actual.seek(0)
expected = [x + '\n' for x in expected]
@@ -240,13 +387,13 @@ class FixJsStyleTest(googletest.TestCase):
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)",
- " */",
- ""
+ '// Copyright 2011 Google Inc. All Rights Reserved.',
+ '',
+ '/**',
+ ' * @fileoverview Fake file overview.',
+ ' * @author fake@google.com (Fake Person)',
+ ' */',
+ ''
]
« no previous file with comments | « third_party/closure_linter/closure_linter/fixjsstyle.py ('k') | third_party/closure_linter/closure_linter/full_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698