diff options
author | Brett Cannon <bcannon@gmail.com> | 2004-07-10 23:54:07 (GMT) |
---|---|---|
committer | Brett Cannon <bcannon@gmail.com> | 2004-07-10 23:54:07 (GMT) |
commit | d2c5b4b549b24e637b16c60bdfae7292e1e75c06 (patch) | |
tree | 08241f92b66f1610de16aba177e163a95480d19a | |
parent | b8e1717041e21d2cc4a5d18fe2e948dc475f0d6e (diff) | |
download | cpython-d2c5b4b549b24e637b16c60bdfae7292e1e75c06.zip cpython-d2c5b4b549b24e637b16c60bdfae7292e1e75c06.tar.gz cpython-d2c5b4b549b24e637b16c60bdfae7292e1e75c06.tar.bz2 |
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).
-rw-r--r-- | Lib/difflib.py | 2 | ||||
-rw-r--r-- | Lib/test/test_difflib.py | 7 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 13 insertions, 0 deletions
diff --git a/Lib/difflib.py b/Lib/difflib.py index 529c786..e82c703 100644 --- a/Lib/difflib.py +++ b/Lib/difflib.py @@ -572,6 +572,8 @@ class SequenceMatcher: """ 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] diff --git a/Lib/test/test_difflib.py b/Lib/test/test_difflib.py index 1703754..9819c84 100644 --- a/Lib/test/test_difflib.py +++ b/Lib/test/test_difflib.py @@ -12,6 +12,13 @@ class TestSFbugs(unittest.TestCase): 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) @@ -29,6 +29,10 @@ Extension modules 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 |