You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
doctest fails to compare tracebacks with notes #111159
» ./python.exe -m doctest ex.py
**********************************************************************
File "/Users/sobolev/Desktop/cpython/ex.py", line 4, in ex
Failed example:
raise_with_note()
Expected:
Traceback (most recent call last):
...
ValueError: Text
Note
Got:
Traceback (most recent call last):
File "/Users/sobolev/Desktop/cpython/Lib/doctest.py", line 1374, in __run
exec(compile(example.source, filename, "single",
File "<doctest ex[0]>", line 1, in <module>
raise_with_note()
File "/Users/sobolev/Desktop/cpython/ex.py", line 14, in raise_with_note
raise err
ValueError: Text
Note
**********************************************************************
1 items had failures:
1 of 1 in ex
***Test Failed*** 1 failures.
Things that do not help:
IGNORE_EXCEPTION_DETAIL
ELLIPSIS
Coping the whole traceback
Related to how exceptions with notes are represented in
Doctest: xpathxslt.txt ...
======================================================================
ERROR: txt (xpathxslt)
Doctest: xpathxslt.txt
----------------------------------------------------------------------
Traceback (most recent call last):
File "/opt/python3.13/lib/python3.13/unittest/case.py", line 58, in testPartExecutor
yield
File "/opt/python3.13/lib/python3.13/unittest/case.py", line 636, in run
self._callTestMethod(testMethod)
File "/opt/python3.13/lib/python3.13/unittest/case.py", line 589, in _callTestMethod
if method() is not None:
^^^^^^^^
File "/opt/python3.13/lib/python3.13/doctest.py", line 2257, in runTest
failures, tries = runner.run(
^^^^^^^^^^^
File "/opt/python3.13/lib/python3.13/doctest.py", line 1537, in run
return self.__run(test, compileflags, out)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/python3.13/lib/python3.13/doctest.py", line 1402, in __run
exc_msg_index = next(
^^^^^
StopIteration
I'm not using "notes" anywhere in the file (and wouldn't know what I'd use them for), so this breaks existing tests.
Activity
pythongh-111159: Fix `doctest` output comparison for exceptions with …
pythongh-111159: Fix `doctest` output comparison for exceptions with …
gh-111159: Fix `doctest` output comparison for exceptions with notes (#…
pythongh-111159: Fix `doctest` output comparison for exceptions with …
pythongh-111159: Fix `doctest` output comparison for exceptions with …
[3.11] gh-111159: Fix `doctest` output comparison for exceptions with…
[3.12] gh-111159: Fix `doctest` output comparison for exceptions with…
scoder commentedon Oct 31, 2023
With this change in place, I now get a (reproducible) doctest failure in lxml that seems rather random:
https://github.com/lxml/lxml/blob/7356acba91bcf37b2c1c6ab5b7c9e37a4f1145b9/doc/xpathxslt.txt
I'm not using "notes" anywhere in the file (and wouldn't know what I'd use them for), so this breaks existing tests.
sobolevn commentedon Oct 31, 2023
Thanks, I will have a look!
scoder commentedon Oct 31, 2023
I think the problem is with subclasses of
SyntaxError. If they live in packages, thestartswith()comparison in the newly added code can fail.pythongh-111159: Fix `SyntaxError` doctests for non-builtin exception…
gh-111159: Fix `SyntaxError` doctests for non-builtin exception class…
pythongh-111159: Fix `SyntaxError` doctests for non-builtin exception…
pythongh-111159: Fix `SyntaxError` doctests for non-builtin exception…
[3.11] gh-111159: Fix `SyntaxError` doctests for non-builtin exceptio…
[3.12] gh-111159: Fix `SyntaxError` doctests for non-builtin exceptio…
hugovk commentedon Nov 9, 2023
Anything left for this issue or can it be closed? Thanks!
pythongh-111159: Fix `doctest` output comparison for exceptions with …
pythongh-111159: Fix `SyntaxError` doctests for non-builtin exception…
pythongh-111159: Fix `doctest` output comparison for exceptions with …
pythongh-111159: Fix `SyntaxError` doctests for non-builtin exception…