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

View File

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