mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-07 05:14:29 +08:00
Create the first tests for the pydocstyle finder.
This commit is contained in:
44
test/test_normalizer_issues_files.py
Normal file
44
test/test_normalizer_issues_files.py
Normal file
@@ -0,0 +1,44 @@
|
||||
"""
|
||||
To easily verify if our normalizer raises the right error codes, just use the
|
||||
tests of pydocstyle.
|
||||
"""
|
||||
|
||||
import re
|
||||
from textwrap import dedent
|
||||
|
||||
import parso
|
||||
|
||||
|
||||
def collect_errors(code):
|
||||
for line_nr, line in enumerate(code.splitlines(), 1):
|
||||
match = re.match(r'(\s*)#: (.*)$', line)
|
||||
if match is not None:
|
||||
codes = match.group(2)
|
||||
for code in codes.split():
|
||||
column = len(match.group(1))
|
||||
if ':' in code:
|
||||
code, _, add_indent = code.partition(':')
|
||||
column += int(add_indent)
|
||||
|
||||
yield "%s@(%s,%s)" % (code, line_nr + 1, column)
|
||||
|
||||
|
||||
def test_normalizer_issue(normalizer_issue_file):
|
||||
with open(normalizer_issue_file.path) as f:
|
||||
code = f.read()
|
||||
|
||||
desired = list(collect_errors(code))
|
||||
|
||||
module = parso.parse(code)
|
||||
issues = module._get_normalizer_issues()
|
||||
|
||||
i = set("E%s@(%s,%s)" % (i.code, i.start_pos[0], i.start_pos[1]) for i in issues)
|
||||
d = set(desired)
|
||||
assert i == d, dedent("""
|
||||
Test %r failed (%s of %s passed).
|
||||
not raised = %s
|
||||
unspecified = %s
|
||||
""") % (
|
||||
normalizer_issue_file.name, len(i & d), len(d),
|
||||
sorted(d - i), sorted(i - d)
|
||||
)
|
||||
Reference in New Issue
Block a user