Merge pull request #104 from rtfd/python-ast
Start altering the pydocstyle AST parser for our needspull/42/merge
commit
152ea1a521
@ -0,0 +1,83 @@
|
|||||||
|
# coding=utf8
|
||||||
|
|
||||||
|
"""Test Python parser"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import unittest
|
||||||
|
from textwrap import dedent
|
||||||
|
|
||||||
|
from autoapi.mappers.python import ParserExtra
|
||||||
|
|
||||||
|
if sys.version_info < (3, 0):
|
||||||
|
from StringIO import StringIO
|
||||||
|
else:
|
||||||
|
from io import StringIO
|
||||||
|
|
||||||
|
|
||||||
|
class PythonParserTests(unittest.TestCase):
|
||||||
|
|
||||||
|
def parse(self, source):
|
||||||
|
in_h = StringIO(dedent(source))
|
||||||
|
return ParserExtra()(in_h, '/dev/null')
|
||||||
|
|
||||||
|
def test_parses_basic_file(self):
|
||||||
|
source = """
|
||||||
|
def foo(bar):
|
||||||
|
pass
|
||||||
|
"""
|
||||||
|
self.assertIsNone(self.parse(source).all)
|
||||||
|
|
||||||
|
def test_parses_all(self):
|
||||||
|
source = """
|
||||||
|
__all__ = ['Foo', 5.0]
|
||||||
|
"""
|
||||||
|
self.assertEqual(self.parse(source).all, ['Foo', 5.0])
|
||||||
|
|
||||||
|
def test_parses_all_with_list_addition(self):
|
||||||
|
source = """
|
||||||
|
__all__ = ['Foo'] + []
|
||||||
|
"""
|
||||||
|
self.assertEqual(self.parse(source).all, ['Foo'])
|
||||||
|
|
||||||
|
def test_parses_all_with_name_addtion(self):
|
||||||
|
source = """
|
||||||
|
__all__ = ['Foo'] + bar.__all__
|
||||||
|
"""
|
||||||
|
self.assertEqual(self.parse(source).all, ['Foo'])
|
||||||
|
|
||||||
|
def test_parses_all_with_multiple_name_addtions(self):
|
||||||
|
source = """
|
||||||
|
__all__ = foo + bar
|
||||||
|
__all__ += boop
|
||||||
|
__all__ += ['foo']
|
||||||
|
"""
|
||||||
|
self.assertEqual(self.parse(source).all, ['foo'])
|
||||||
|
source = """
|
||||||
|
__all__ = ['foo']
|
||||||
|
__all__ = foo
|
||||||
|
"""
|
||||||
|
self.assertEqual(self.parse(source).all, [])
|
||||||
|
|
||||||
|
def test_parses_all_multiline(self):
|
||||||
|
source = """
|
||||||
|
__all__ = [
|
||||||
|
'foo',
|
||||||
|
'bar',
|
||||||
|
]
|
||||||
|
"""
|
||||||
|
self.assertEqual(self.parse(source).all, ['foo', 'bar'])
|
||||||
|
|
||||||
|
def test_parses_all_generator(self):
|
||||||
|
source = """
|
||||||
|
__all__ = [x for x in dir(token) if x[0] != '_'] + ['foo', 'bar']
|
||||||
|
"""
|
||||||
|
out = self.parse(source)
|
||||||
|
self.assertEqual(self.parse(source).all, ['foo', 'bar'])
|
||||||
|
|
||||||
|
def test_parses_name(self):
|
||||||
|
source = "foo.bar"
|
||||||
|
self.assertEqual(self.parse(source).children, [])
|
||||||
|
|
||||||
|
def test_parses_list(self):
|
||||||
|
source = "__all__ = [[1, 2], [3, 4]]"
|
||||||
|
self.assertEqual(self.parse(source).all, [[1, 2], [3, 4]])
|
Loading…
Reference in New Issue