SequenceMatcher(None, [], []).get_grouped_opcodes() now returns a generator
that behaves as if both lists has an empty string in each of them. Closes bug #979794 (and duplicate bug #980117).
This commit is contained in:
parent
b8e1717041
commit
d2c5b4b549
|
@ -572,6 +572,8 @@ class SequenceMatcher:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
codes = self.get_opcodes()
|
codes = self.get_opcodes()
|
||||||
|
if not codes:
|
||||||
|
codes = [("equal", 0, 1, 0, 1)]
|
||||||
# Fixup leading and trailing groups if they show no changes.
|
# Fixup leading and trailing groups if they show no changes.
|
||||||
if codes[0][0] == 'equal':
|
if codes[0][0] == 'equal':
|
||||||
tag, i1, i2, j1, j2 = codes[0]
|
tag, i1, i2, j1, j2 = codes[0]
|
||||||
|
|
|
@ -12,6 +12,13 @@ class TestSFbugs(unittest.TestCase):
|
||||||
self.assertEqual(s.quick_ratio(), 1)
|
self.assertEqual(s.quick_ratio(), 1)
|
||||||
self.assertEqual(s.real_quick_ratio(), 1)
|
self.assertEqual(s.real_quick_ratio(), 1)
|
||||||
|
|
||||||
|
def test_comparing_empty_lists(self):
|
||||||
|
# Check fix for bug #979794
|
||||||
|
group_gen = difflib.SequenceMatcher(None, [], []).get_grouped_opcodes()
|
||||||
|
self.assertRaises(StopIteration, group_gen.next)
|
||||||
|
diff_gen = difflib.unified_diff([], [])
|
||||||
|
self.assertRaises(StopIteration, diff_gen.next)
|
||||||
|
|
||||||
Doctests = doctest.DocTestSuite(difflib)
|
Doctests = doctest.DocTestSuite(difflib)
|
||||||
|
|
||||||
test_support.run_unittest(TestSFbugs, Doctests)
|
test_support.run_unittest(TestSFbugs, Doctests)
|
||||||
|
|
|
@ -29,6 +29,10 @@ Extension modules
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Bug #979794: difflib.get_grouped_opcodes() now handles the case of when it is
|
||||||
|
comparing two empty lists. Was affecting both context_diff() and
|
||||||
|
unified_diff(). Was also a duplicate of bug #980117.
|
||||||
|
|
||||||
- Bug #980938: smtplib now prints debug output to sys.stderr.
|
- Bug #980938: smtplib now prints debug output to sys.stderr.
|
||||||
|
|
||||||
- Bug #930024: posixpath.realpath() now handles infinite loops in symlinks by
|
- Bug #930024: posixpath.realpath() now handles infinite loops in symlinks by
|
||||||
|
|
Loading…
Reference in New Issue