that behaves as if both lists has an empty string in each of them.
Closes bug #979794 (and duplicate bug #980117).
"""
codes = self.get_opcodes()
+ if not codes:
+ codes = [("equal", 0, 1, 0, 1)]
# Fixup leading and trailing groups if they show no changes.
if codes[0][0] == 'equal':
tag, i1, i2, j1, j2 = codes[0]
self.assertEqual(s.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)
test_support.run_unittest(TestSFbugs, Doctests)
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 #930024: posixpath.realpath() now handles infinite loops in symlinks by