Index: third_party/closure_linter/closure_linter/javascriptstatetracker_test.py |
diff --git a/third_party/closure_linter/closure_linter/javascriptstatetracker_test.py b/third_party/closure_linter/closure_linter/javascriptstatetracker_test.py |
deleted file mode 100644 |
index 76dabd2c70d58a19eeee12c7875de52042b20beb..0000000000000000000000000000000000000000 |
--- a/third_party/closure_linter/closure_linter/javascriptstatetracker_test.py |
+++ /dev/null |
@@ -1,278 +0,0 @@ |
-#!/usr/bin/env python |
-# |
-# Copyright 2012 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. |
- |
-"""Unit tests for the javascriptstatetracker module.""" |
- |
-# Allow non-Google copyright |
-# pylint: disable=g-bad-file-header |
- |
-__author__ = ('nnaze@google.com (Nathan Naze)') |
- |
- |
-import unittest as googletest |
- |
-from closure_linter import javascripttokens |
-from closure_linter import testutil |
-from closure_linter import tokenutil |
- |
- |
-_FUNCTION_SCRIPT = """\ |
-var a = 3; |
- |
-function foo(aaa, bbb, ccc) { |
- var b = 4; |
-} |
- |
- |
-/** |
- * JSDoc comment. |
- */ |
-var bar = function(ddd, eee, fff) { |
- |
-}; |
- |
- |
-/** |
- * Verify that nested functions get their proper parameters recorded. |
- */ |
-var baz = function(ggg, hhh, iii) { |
- var qux = function(jjj, kkk, lll) { |
- }; |
- // make sure that entering a new block does not change baz' parameters. |
- {}; |
-}; |
- |
-""" |
- |
- |
-class FunctionTest(googletest.TestCase): |
- |
- def testFunctionParse(self): |
- functions, _ = testutil.ParseFunctionsAndComments(_FUNCTION_SCRIPT) |
- self.assertEquals(4, len(functions)) |
- |
- # First function |
- function = functions[0] |
- self.assertEquals(['aaa', 'bbb', 'ccc'], function.parameters) |
- |
- start_token = function.start_token |
- end_token = function.end_token |
- |
- self.assertEquals( |
- javascripttokens.JavaScriptTokenType.FUNCTION_DECLARATION, |
- function.start_token.type) |
- |
- self.assertEquals('function', start_token.string) |
- self.assertEquals(3, start_token.line_number) |
- self.assertEquals(0, start_token.start_index) |
- |
- self.assertEquals('}', end_token.string) |
- self.assertEquals(5, end_token.line_number) |
- self.assertEquals(0, end_token.start_index) |
- |
- self.assertEquals('foo', function.name) |
- |
- self.assertIsNone(function.doc) |
- |
- # Second function |
- function = functions[1] |
- self.assertEquals(['ddd', 'eee', 'fff'], function.parameters) |
- |
- start_token = function.start_token |
- end_token = function.end_token |
- |
- self.assertEquals( |
- javascripttokens.JavaScriptTokenType.FUNCTION_DECLARATION, |
- function.start_token.type) |
- |
- self.assertEquals('function', start_token.string) |
- self.assertEquals(11, start_token.line_number) |
- self.assertEquals(10, start_token.start_index) |
- |
- self.assertEquals('}', end_token.string) |
- self.assertEquals(13, end_token.line_number) |
- self.assertEquals(0, end_token.start_index) |
- |
- self.assertEquals('bar', function.name) |
- |
- self.assertIsNotNone(function.doc) |
- |
- # Check function JSDoc |
- doc = function.doc |
- doc_tokens = tokenutil.GetTokenRange(doc.start_token, doc.end_token) |
- |
- comment_type = javascripttokens.JavaScriptTokenType.COMMENT |
- comment_tokens = filter(lambda t: t.type is comment_type, doc_tokens) |
- |
- self.assertEquals('JSDoc comment.', |
- tokenutil.TokensToString(comment_tokens).strip()) |
- |
- # Third function |
- function = functions[2] |
- self.assertEquals(['ggg', 'hhh', 'iii'], function.parameters) |
- |
- start_token = function.start_token |
- end_token = function.end_token |
- |
- self.assertEquals( |
- javascripttokens.JavaScriptTokenType.FUNCTION_DECLARATION, |
- function.start_token.type) |
- |
- self.assertEquals('function', start_token.string) |
- self.assertEquals(19, start_token.line_number) |
- self.assertEquals(10, start_token.start_index) |
- |
- self.assertEquals('}', end_token.string) |
- self.assertEquals(24, end_token.line_number) |
- self.assertEquals(0, end_token.start_index) |
- |
- self.assertEquals('baz', function.name) |
- self.assertIsNotNone(function.doc) |
- |
- # Fourth function (inside third function) |
- function = functions[3] |
- self.assertEquals(['jjj', 'kkk', 'lll'], function.parameters) |
- |
- start_token = function.start_token |
- end_token = function.end_token |
- |
- self.assertEquals( |
- javascripttokens.JavaScriptTokenType.FUNCTION_DECLARATION, |
- function.start_token.type) |
- |
- self.assertEquals('function', start_token.string) |
- self.assertEquals(20, start_token.line_number) |
- self.assertEquals(12, start_token.start_index) |
- |
- self.assertEquals('}', end_token.string) |
- self.assertEquals(21, end_token.line_number) |
- self.assertEquals(2, end_token.start_index) |
- |
- self.assertEquals('qux', function.name) |
- self.assertIsNone(function.doc) |
- |
- |
- |
-class CommentTest(googletest.TestCase): |
- |
- def testGetDescription(self): |
- comment = self._ParseComment(""" |
- /** |
- * Comment targeting goog.foo. |
- * |
- * This is the second line. |
- * @param {number} foo The count of foo. |
- */ |
- target;""") |
- |
- self.assertEqual( |
- 'Comment targeting goog.foo.\n\nThis is the second line.', |
- comment.description) |
- |
- def testCommentGetTarget(self): |
- self.assertCommentTarget('goog.foo', """ |
- /** |
- * Comment targeting goog.foo. |
- */ |
- goog.foo = 6; |
- """) |
- |
- self.assertCommentTarget('bar', """ |
- /** |
- * Comment targeting bar. |
- */ |
- var bar = "Karate!"; |
- """) |
- |
- self.assertCommentTarget('doThing', """ |
- /** |
- * Comment targeting doThing. |
- */ |
- function doThing() {}; |
- """) |
- |
- self.assertCommentTarget('this.targetProperty', """ |
- goog.bar.Baz = function() { |
- /** |
- * Comment targeting targetProperty. |
- */ |
- this.targetProperty = 3; |
- }; |
- """) |
- |
- self.assertCommentTarget('goog.bar.prop', """ |
- /** |
- * Comment targeting goog.bar.prop. |
- */ |
- goog.bar.prop; |
- """) |
- |
- self.assertCommentTarget('goog.aaa.bbb', """ |
- /** |
- * Comment targeting goog.aaa.bbb. |
- */ |
- (goog.aaa.bbb) |
- """) |
- |
- self.assertCommentTarget('theTarget', """ |
- /** |
- * Comment targeting symbol preceded by newlines, whitespace, |
- * and parens -- things we ignore. |
- */ |
- (theTarget) |
- """) |
- |
- self.assertCommentTarget(None, """ |
- /** |
- * @fileoverview File overview. |
- */ |
- (notATarget) |
- """) |
- |
- self.assertCommentTarget(None, """ |
- /** |
- * Comment that doesn't find a target. |
- */ |
- """) |
- |
- self.assertCommentTarget('theTarget.is.split.across.lines', """ |
- /** |
- * Comment that addresses a symbol split across lines. |
- */ |
- (theTarget.is.split |
- .across.lines) |
- """) |
- |
- self.assertCommentTarget('theTarget.is.split.across.lines', """ |
- /** |
- * Comment that addresses a symbol split across lines. |
- */ |
- (theTarget.is.split. |
- across.lines) |
- """) |
- |
- def _ParseComment(self, script): |
- """Parse a script that contains one comment and return it.""" |
- _, comments = testutil.ParseFunctionsAndComments(script) |
- self.assertEquals(1, len(comments)) |
- return comments[0] |
- |
- def assertCommentTarget(self, target, script): |
- comment = self._ParseComment(script) |
- self.assertEquals(target, comment.GetTargetIdentifier()) |
- |
- |
-if __name__ == '__main__': |
- googletest.main() |