mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-06 12:54:29 +08:00
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
"""
|
|
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():
|
|
code, _, add_indent = code.partition(':')
|
|
column = int(add_indent or len(match.group(1)))
|
|
|
|
code, _, add_line = code.partition('+')
|
|
l = line_nr + 1 + int(add_line or 0)
|
|
|
|
yield "%s@(%s,%s)" % (code[1:], l, 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("%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
|
|
unexpected = %s
|
|
""") % (
|
|
normalizer_issue_file.name, len(i & d), len(d),
|
|
sorted(d - i), sorted(i - d)
|
|
)
|