Okhjon created this task.
Okhjon added a project: Pywikibot.
Restricted Application added subscribers: pywikibot-bugs-list, Aklapper.
TASK DESCRIPTION
Hello there,
`showDiff` throw an `IndexError` if used on texts with no difference but a
non-zero context. Since this is not documented, I think this is a bug.
I can reproduce the bug with the latest git code (`f2daf078`):
$ python3
Python 3.7.7 (default, Mar 10 2020, 15:43:33)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pywikibot
>>> pywikibot.showDiff("foo", "foo", context=2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/private/tmp/pywikibot/pywikibot/__init__.py", line 1314, in
showDiff
PatchManager(oldtext, newtext, context=context).print_hunks()
File "/private/tmp/pywikibot/pywikibot/tools/__init__.py", line 1797, in
wrapper
return obj(*__args, **__kw)
File "/private/tmp/pywikibot/pywikibot/diff.py", line 300, in __init__
self._super_hunks = self._generate_super_hunks()
File "/private/tmp/pywikibot/pywikibot/diff.py", line 361, in
_generate_super_hunks
return [_SuperHunk(sh) for sh in super_hunks]
File "/private/tmp/pywikibot/pywikibot/diff.py", line 361, in <listcomp>
return [_SuperHunk(sh) for sh in super_hunks]
File "/private/tmp/pywikibot/pywikibot/diff.py", line 223, in __init__
self.a_rng = (self._hunks[0].a_rng[0], self._hunks[-1].a_rng[1])
IndexError: list index out of range
Note: the length of the text doesn’t matter:
>>> text = "foobar\n" * 100
>>> pywikibot.showDiff(text, text, context=2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/private/tmp/pywikibot/pywikibot/__init__.py", line 1314, in
showDiff
PatchManager(oldtext, newtext, context=context).print_hunks()
File "/private/tmp/pywikibot/pywikibot/tools/__init__.py", line 1797, in
wrapper
return obj(*__args, **__kw)
File "/private/tmp/pywikibot/pywikibot/diff.py", line 300, in __init__
self._super_hunks = self._generate_super_hunks()
File "/private/tmp/pywikibot/pywikibot/diff.py", line 361, in
_generate_super_hunks
return [_SuperHunk(sh) for sh in super_hunks]
File "/private/tmp/pywikibot/pywikibot/diff.py", line 361, in <listcomp>
return [_SuperHunk(sh) for sh in super_hunks]
File "/private/tmp/pywikibot/pywikibot/diff.py", line 223, in __init__
self.a_rng = (self._hunks[0].a_rng[0], self._hunks[-1].a_rng[1])
IndexError: list index out of range
Expected output: `pywikibot.showDiff("foo", "foo", context=2)` should print
nothing, just like `pywikibot.showDiff("foo", "foo")` does.
Actual output: see above.
TASK DETAIL
https://phabricator.wikimedia.org/T252724
EMAIL PREFERENCES
https://phabricator.wikimedia.org/settings/panel/emailpreferences/
To: Okhjon
Cc: Aklapper, pywikibot-bugs-list, Okhjon, JohnsonLee01, Dijkstra, Zkhalido,
Viztor, Wenyi, Tbscho, MayS, Mdupont, JJMC89, Dvorapa, Altostratus,
Avicennasis, mys_721tx, jayvdb, Masti, Alchimista, Rxy
_______________________________________________
pywikibot-bugs mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-bugs