Skip to content

doctest fails to compare tracebacks with notes #111159

Closed
@sobolevn

Description

@sobolevn

Bug report

Minimal reproducer:

"""
Module doctest

>>> raise_with_note()
Traceback (most recent call last):
  ...
ValueError: Text
Note
"""

def raise_with_note():
    err = ValueError('Text')
    err.add_note('Note')
    raise err

Now, run it, you will get a very strange error:

» ./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

exc_msg = traceback.format_exception_only(*exception[:2])[-1]

I am working on this issue right now :)

Refs #111157

Linked PRs

Metadata

Metadata

Assignees

Labels

stdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions