Fix newline endings and a few parser/copy counts

This commit is contained in:
Dave Halter
2019-01-13 19:55:18 +01:00
parent f80d9de7a0
commit a7e24a37e7
2 changed files with 24 additions and 17 deletions

View File

@@ -271,10 +271,9 @@ class DiffParser(object):
self._parse(self._nodes_tree.parsed_until_line + 1)
elif not copied_nodes:
# We have copied as much as possible (but definitely not too
# much). Therefore we just parse the rest.
# We might not reach the end, because there's a statement
# that is not finished.
self._parse(until_line_new)
# much). Therefore we just parse a bit more.
self._parse(self._nodes_tree.parsed_until_line + 1)
copied_nodes = [None]
else:
p_children = line_stmt.parent.children
index = p_children.index(line_stmt)
@@ -393,10 +392,6 @@ class DiffParser(object):
typ, string, start_pos, prefix = next(tokens)
if '\n' in prefix or '\r' in prefix:
prefix = re.sub(r'[^\n\r]+\Z', '', prefix)
else:
# This is basically the next line and it still needs to
# be parserd.
prefix = ''
yield PythonToken(
PythonTokenTypes.ENDMARKER, '',
(start_pos[0] + line_offset, 0),

View File

@@ -67,8 +67,8 @@ class Differ(object):
error_node = _check_error_leaves_nodes(new_module)
assert expect_error_leaves == (error_node is not None), error_node
#assert diff_parser._parser_count == parsers
#assert diff_parser._copy_count == copies
assert diff_parser._parser_count == parsers
assert diff_parser._copy_count == copies
return new_module
@@ -726,7 +726,7 @@ def test_paren_in_strange_position(differ):
differ.initialize(code1)
differ.parse(code2, parsers=1, copies=2, expect_error_leaves=True)
differ.parse(code1, parsers=1, copies=1)
differ.parse(code1, parsers=0, copies=2)
def insert_line_into_code(code, index, line):
@@ -818,9 +818,9 @@ def test_indentation_issues(differ):
''')
differ.initialize(code1)
differ.parse(code2, parsers=1, copies=2, expect_error_leaves=True)
differ.parse(code1, parsers=2, copies=1)
differ.parse(code3, parsers=1, copies=1)
differ.parse(code2, parsers=2, copies=2, expect_error_leaves=True)
differ.parse(code1, copies=2)
differ.parse(code3, parsers=2, copies=1)
differ.parse(code1, parsers=1, copies=2)
@@ -854,7 +854,7 @@ def test_error_dedent_issues(differ):
''')
differ.initialize(code1)
differ.parse(code2, parsers=5, copies=1, expect_error_leaves=True)
differ.parse(code2, parsers=6, copies=2, expect_error_leaves=True)
differ.parse(code1, parsers=1, copies=0)
@@ -998,5 +998,17 @@ def test_dedent_end_positions(differ):
5}
''')
differ.initialize(code1)
differ.parse(code2, copies=6, parsers=14, expect_error_leaves=True)
differ.parse(code1, copies=6, parsers=11)
differ.parse(code2, parsers=1, expect_error_leaves=True)
differ.parse(code1, parsers=1)
def test_special_no_newline_ending(differ):
code1 = dedent('''\
1
''')
code2 = dedent('''\
1
is ''')
differ.initialize(code1)
differ.parse(code2, copies=1, parsers=1, expect_error_leaves=True)
differ.parse(code1, copies=1, parsers=0)