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

Unified Diff: third_party/closure_linter/closure_linter/closurizednamespacesinfo_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/closurizednamespacesinfo_test.py
diff --git a/third_party/closure_linter/closure_linter/closurizednamespacesinfo_test.py b/third_party/closure_linter/closure_linter/closurizednamespacesinfo_test.py
index cec3376e12dfbf15bb9e0b77a397e1ab26ed5b6a..42499419efadab27309076e59ecf98fa7cf07722 100755
--- a/third_party/closure_linter/closure_linter/closurizednamespacesinfo_test.py
+++ b/third_party/closure_linter/closure_linter/closurizednamespacesinfo_test.py
@@ -19,13 +19,15 @@
import unittest as googletest
+from closure_linter import aliaspass
from closure_linter import closurizednamespacesinfo
+from closure_linter import ecmametadatapass
from closure_linter import javascriptstatetracker
-from closure_linter import javascripttokenizer
from closure_linter import javascripttokens
+from closure_linter import testutil
from closure_linter import tokenutil
-# pylint: disable-msg=C6409
+# pylint: disable=g-bad-name
TokenType = javascripttokens.JavaScriptTokenType
@@ -56,8 +58,6 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'package.className.prototype.something.somethingElse': 'package.className'
}
- _tokenizer = javascripttokenizer.JavaScriptTokenizer()
-
def testGetClosurizedNamespace(self):
"""Tests that the correct namespace is returned for various identifiers."""
namespaces_info = closurizednamespacesinfo.ClosurizedNamespacesInfo(
@@ -93,8 +93,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.provide(\'package.Foo\');',
'package.Foo = function() {};'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertFalse(namespaces_info.IsExtraProvide(token),
'Should not be extra since it is created.')
@@ -105,8 +106,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.provide(\'package.Foo.methodName\');',
'package.Foo.methodName = function() {};'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertFalse(namespaces_info.IsExtraProvide(token),
'Should not be extra since it is created.')
@@ -114,8 +116,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
def testIsExtraProvide_notCreated(self):
"""Tests that provides for non-created namespaces are extra."""
input_lines = ['goog.provide(\'package.Foo\');']
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertTrue(namespaces_info.IsExtraProvide(token),
'Should be extra since it is not created.')
@@ -127,8 +130,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.provide(\'package.Foo\');',
'package.Foo = function() {};'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
# Advance to the second goog.provide token.
token = tokenutil.Search(token.next, TokenType.IDENTIFIER)
@@ -139,8 +143,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
def testIsExtraProvide_notClosurized(self):
"""Tests that provides of non-closurized namespaces are not extra."""
input_lines = ['goog.provide(\'notclosurized.Foo\');']
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertFalse(namespaces_info.IsExtraProvide(token),
'Should not be extra since it is not closurized.')
@@ -151,8 +156,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.require(\'package.Foo\');',
'var x = package.Foo.methodName();'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertFalse(namespaces_info.IsExtraRequire(token),
'Should not be extra since it is used.')
@@ -163,8 +169,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.require(\'package.Foo.methodName\');',
'var x = package.Foo.methodName();'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertTrue(namespaces_info.IsExtraRequire(token),
'Should require the package, not the method specifically.')
@@ -172,8 +179,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
def testIsExtraRequire_notUsed(self):
"""Tests that requires for unused namespaces are extra."""
input_lines = ['goog.require(\'package.Foo\');']
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertTrue(namespaces_info.IsExtraRequire(token),
'Should be extra since it is not used.')
@@ -181,8 +189,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
def testIsExtraRequire_notClosurized(self):
"""Tests that requires of non-closurized namespaces are not extra."""
input_lines = ['goog.require(\'notclosurized.Foo\');']
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertFalse(namespaces_info.IsExtraRequire(token),
'Should not be extra since it is not closurized.')
@@ -193,8 +202,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.require(\'package.Foo.Enum\');',
'var x = package.Foo.Enum.VALUE1;',
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertTrue(namespaces_info.IsExtraRequire(token),
'The whole class, not the object, should be required.');
@@ -205,8 +215,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.require(\'package.Foo.CONSTANT\');',
'var x = package.Foo.CONSTANT',
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertTrue(namespaces_info.IsExtraRequire(token),
'The class, not the constant, should be required.');
@@ -217,8 +228,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.require(\'package.subpackage.CONSTANT\');',
'var x = package.subpackage.CONSTANT',
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertFalse(namespaces_info.IsExtraRequire(token),
'Constants can be required except on classes.');
@@ -229,8 +241,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.require(\'package.subpackage.method\');',
'var x = package.subpackage.method()',
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertFalse(namespaces_info.IsExtraRequire(token),
'Methods can be required except on classes.');
@@ -238,8 +251,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
def testIsExtraRequire_defaults(self):
"""Tests that there are no warnings about extra requires for test utils"""
input_lines = ['goog.require(\'goog.testing.jsunit\');']
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['goog'], [])
+
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['goog'])
self.assertFalse(namespaces_info.IsExtraRequire(token),
'Should not be extra since it is for testing.')
@@ -250,8 +264,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.provide(\'package.Foo\');',
'package.Foo = function() {};'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+
+ namespaces_info = self._GetNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertEquals(0, len(namespaces_info.GetMissingProvides()))
@@ -261,9 +276,8 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.provide(\'package.Foo.methodName\');',
'package.Foo.methodName = function() {};'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
self.assertEquals(0, len(namespaces_info.GetMissingProvides()))
def testGetMissingProvides_providedParentIdentifier(self):
@@ -274,26 +288,27 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'package.foo.ClassName.methodName = function() {};',
'package.foo.ClassName.ObjectName = 1;',
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
self.assertEquals(0, len(namespaces_info.GetMissingProvides()))
def testGetMissingProvides_unprovided(self):
"""Tests that unprovided functions cause a missing provide."""
input_lines = ['package.Foo = function() {};']
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
- self.assertEquals(1, len(namespaces_info.GetMissingProvides()))
- self.assertTrue('package.Foo' in namespaces_info.GetMissingProvides())
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
+
+ missing_provides = namespaces_info.GetMissingProvides()
+ self.assertEquals(1, len(missing_provides))
+ missing_provide = missing_provides.popitem()
+ self.assertEquals('package.Foo', missing_provide[0])
+ self.assertEquals(1, missing_provide[1])
def testGetMissingProvides_privatefunction(self):
"""Tests that unprovided private functions don't cause a missing provide."""
input_lines = ['package.Foo_ = function() {};']
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
self.assertEquals(0, len(namespaces_info.GetMissingProvides()))
def testGetMissingProvides_required(self):
@@ -302,9 +317,8 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.require(\'package.Foo\');',
'package.Foo.methodName = function() {};'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
self.assertEquals(0, len(namespaces_info.GetMissingProvides()))
def testGetMissingRequires_required(self):
@@ -313,9 +327,8 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.require(\'package.Foo\');',
'package.Foo();'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
self.assertEquals(0, len(namespaces_info.GetMissingProvides()))
def testGetMissingRequires_requiredIdentifier(self):
@@ -324,9 +337,8 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.require(\'package.Foo\');',
'package.Foo.methodName();'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
self.assertEquals(0, len(namespaces_info.GetMissingProvides()))
def testGetMissingRequires_requiredParentClass(self):
@@ -337,19 +349,21 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'package.Foo.methodName();',
'package.Foo.methodName(package.Foo.ObjectName);'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
self.assertEquals(0, len(namespaces_info.GetMissingRequires()))
def testGetMissingRequires_unrequired(self):
"""Tests that unrequired namespaces cause a missing require."""
input_lines = ['package.Foo();']
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
- self.assertEquals(1, len(namespaces_info.GetMissingRequires()))
- self.assertTrue('package.Foo' in namespaces_info.GetMissingRequires())
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
+
+ missing_requires = namespaces_info.GetMissingRequires()
+ self.assertEquals(1, len(missing_requires))
+ missing_req = missing_requires.popitem()
+ self.assertEquals('package.Foo', missing_req[0])
+ self.assertEquals(1, missing_req[1])
def testGetMissingRequires_provided(self):
"""Tests that provided namespaces satisfy identifiers on that namespace."""
@@ -357,22 +371,27 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.provide(\'package.Foo\');',
'package.Foo.methodName();'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
self.assertEquals(0, len(namespaces_info.GetMissingRequires()))
def testGetMissingRequires_created(self):
"""Tests that created namespaces do not satisfy usage of an identifier."""
input_lines = [
'package.Foo = function();',
- 'package.Foo.methodName();'
+ 'package.Foo.methodName();',
+ 'package.Foo.anotherMethodName1();',
+ 'package.Foo.anotherMethodName2();'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
- self.assertEquals(1, len(namespaces_info.GetMissingRequires()))
- self.assertTrue('package.Foo' in namespaces_info.GetMissingRequires())
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
+
+ missing_requires = namespaces_info.GetMissingRequires()
+ self.assertEquals(1, len(missing_requires))
+ missing_require = missing_requires.popitem()
+ self.assertEquals('package.Foo', missing_require[0])
+ # Make sure line number of first occurrence is reported
+ self.assertEquals(2, missing_require[1])
def testGetMissingRequires_createdIdentifier(self):
"""Tests that created identifiers satisfy usage of the identifier."""
@@ -380,9 +399,8 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'package.Foo.methodName = function();',
'package.Foo.methodName();'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
self.assertEquals(0, len(namespaces_info.GetMissingRequires()))
def testGetMissingRequires_objectOnClass(self):
@@ -391,11 +409,49 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.require(\'package.Foo.Enum\');',
'var x = package.Foo.Enum.VALUE1;',
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['package'])
self.assertEquals(1, len(namespaces_info.GetMissingRequires()),
- 'The whole class, not the object, should be required.');
+ 'The whole class, not the object, should be required.')
+
+ def testGetMissingRequires_variableWithSameName(self):
+ """Tests that we should not goog.require variables and parameters.
+
+ b/5362203 Variables in scope are not missing namespaces.
+ """
+ input_lines = [
+ 'goog.provide(\'Foo\');',
+ 'Foo.A = function();',
+ 'Foo.A.prototype.method = function(ab) {',
+ ' if (ab) {',
+ ' var docs;',
+ ' var lvalue = new Obj();',
+ ' // Variable in scope hence not goog.require here.',
+ ' docs.foo.abc = 1;',
+ ' lvalue.next();',
+ ' }',
+ ' // Since js is function scope this should also not goog.require.',
+ ' docs.foo.func();',
+ ' // Its not a variable in scope hence goog.require.',
+ ' dummy.xyz.reset();',
+ ' return this.method2();',
+ '};',
+ 'Foo.A.prototype.method1 = function(docs, abcd, xyz) {',
+ ' // Parameter hence not goog.require.',
+ ' docs.nodes.length = 2;',
+ ' lvalue.abc.reset();',
+ '};'
+ ]
+
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['Foo',
+ 'docs',
+ 'lvalue',
+ 'dummy'])
+ missing_requires = namespaces_info.GetMissingRequires()
+ self.assertEquals(2, len(missing_requires))
+ self.assertItemsEqual(
+ {'dummy.xyz': 14,
+ 'lvalue.abc': 20}, missing_requires)
def testIsFirstProvide(self):
"""Tests operation of the isFirstProvide method."""
@@ -403,9 +459,9 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
'goog.provide(\'package.Foo\');',
'package.Foo.methodName();'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = self._GetInitializedNamespacesInfo(token, ['package'], [])
+ token, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ input_lines, ['package'])
self.assertTrue(namespaces_info.IsFirstProvide(token))
def testGetWholeIdentifierString(self):
@@ -415,13 +471,100 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
' veryLong.',
' identifier;'
]
- token = self._tokenizer.TokenizeFile(input_lines)
- namespaces_info = closurizednamespacesinfo.ClosurizedNamespacesInfo([], [])
+
+ token = testutil.TokenizeSource(input_lines)
self.assertEquals('package.Foo.veryLong.identifier',
- namespaces_info._GetWholeIdentifierString(token))
+ tokenutil.GetIdentifierForToken(token))
+
self.assertEquals(None,
- namespaces_info._GetWholeIdentifierString(token.next))
+ tokenutil.GetIdentifierForToken(token.next))
+
+ def testScopified(self):
+ """Tests that a goog.scope call is noticed."""
+ input_lines = [
+ 'goog.scope(function() {',
+ '});'
+ ]
+
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['goog'])
+ self.assertTrue(namespaces_info._scopified_file)
+
+ def testScope_unusedAlias(self):
+ """Tests that an used alias symbol doesn't result in a require."""
+ input_lines = [
+ 'goog.scope(function() {',
+ 'var Event = goog.events.Event;',
+ '});'
+ ]
+
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['goog'])
+ missing_requires = namespaces_info.GetMissingRequires()
+ self.assertEquals({}, missing_requires)
+
+ def testScope_usedAlias(self):
+ """Tests that aliased symbols result in correct requires."""
+ input_lines = [
+ 'goog.scope(function() {',
+ 'var Event = goog.events.Event;',
+ 'var dom = goog.dom;',
+ 'Event(dom.classes.get);',
+ '});'
+ ]
+
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['goog'])
+ missing_requires = namespaces_info.GetMissingRequires()
+ self.assertEquals({'goog.dom.classes': 4, 'goog.events.Event': 4},
+ missing_requires)
+
+ def testScope_provides(self):
+ """Tests that aliased symbols result in correct provides."""
+ input_lines = [
+ 'goog.scope(function() {',
+ 'goog.bar = {};',
+ 'var bar = goog.bar;',
+ 'bar.Foo = {};',
+ '});'
+ ]
+
+ namespaces_info = self._GetNamespacesInfoForScript(input_lines, ['goog'])
+ missing_provides = namespaces_info.GetMissingProvides()
+ self.assertEquals({'goog.bar.Foo': 4}, missing_provides)
+
+ def testSetTestOnlyNamespaces(self):
+ """Tests that a namespace in setTestOnly makes it a valid provide."""
+ namespaces_info = self._GetNamespacesInfoForScript([
+ 'goog.setTestOnly(\'goog.foo.barTest\');'
+ ], ['goog'])
+
+ token = self._GetProvideTokens('goog.foo.barTest')
+ self.assertFalse(namespaces_info.IsExtraProvide(token))
+
+ token = self._GetProvideTokens('goog.foo.bazTest')
+ self.assertTrue(namespaces_info.IsExtraProvide(token))
+
+ def testSetTestOnlyComment(self):
+ """Ensure a comment in setTestOnly does not cause a created namespace."""
+ namespaces_info = self._GetNamespacesInfoForScript([
+ 'goog.setTestOnly(\'this is a comment\');'
+ ], ['goog'])
+
+ self.assertEquals(
+ [], namespaces_info._created_namespaces,
+ 'A comment in setTestOnly should not modify created namespaces.')
+
+ def _GetNamespacesInfoForScript(self, script, closurized_namespaces=None):
+ _, namespaces_info = self._GetStartTokenAndNamespacesInfoForScript(
+ script, closurized_namespaces)
+
+ return namespaces_info
+
+ def _GetStartTokenAndNamespacesInfoForScript(
+ self, script, closurized_namespaces):
+
+ token = testutil.TokenizeSource(script)
+ return token, self._GetInitializedNamespacesInfo(
+ token, closurized_namespaces, [])
def _GetInitializedNamespacesInfo(self, token, closurized_namespaces,
ignored_extra_namespaces):
@@ -431,8 +574,16 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
ignored_extra_namespaces=ignored_extra_namespaces)
state_tracker = javascriptstatetracker.JavaScriptStateTracker()
+ ecma_pass = ecmametadatapass.EcmaMetaDataPass()
+ ecma_pass.Process(token)
+
+ alias_pass = aliaspass.AliasPass(closurized_namespaces)
+ alias_pass.Process(token)
+
while token:
+ state_tracker.HandleToken(token, state_tracker.GetLastNonSpaceToken())
namespaces_info.ProcessToken(token, state_tracker)
+ state_tracker.HandleAfterToken(token)
token = token.next
return namespaces_info
@@ -440,12 +591,12 @@ class ClosurizedNamespacesInfoTest(googletest.TestCase):
def _GetProvideTokens(self, namespace):
"""Returns a list of tokens for a goog.require of the given namespace."""
line_text = 'goog.require(\'' + namespace + '\');\n'
- return javascripttokenizer.JavaScriptTokenizer().TokenizeFile([line_text])
+ return testutil.TokenizeSource([line_text])
def _GetRequireTokens(self, namespace):
"""Returns a list of tokens for a goog.require of the given namespace."""
line_text = 'goog.require(\'' + namespace + '\');\n'
- return javascripttokenizer.JavaScriptTokenizer().TokenizeFile([line_text])
+ return testutil.TokenizeSource([line_text])
if __name__ == '__main__':
googletest.main()

Powered by Google App Engine
This is Rietveld 408576698