New submission from David Mandelberg <dse...@google.com>:

The traceback in the output of the attached test (see below) doesn't include 
line 5, which is where the original exception is raised. I think this is 
because 
https://github.com/python/cpython/blob/b9ee4af4c643a323779fd7076e80b29d611f2709/Lib/unittest/result.py#L180-L186
 uses the `limit` parameter to try to hide the implementation of `self.fail()` 
from the traceback, but `traceback.TracebackException.format()` applies the 
limit to the chained exception. I'm not sure if that's a bug in unittest or 
traceback, but from the comment in the above part of unittest, I don't think 
it's intentional.


F
======================================================================
FAIL: test_foo (__main__.FooTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "foo.py", line 12, in test_foo
    foo()
ValueError: foo

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "foo.py", line 14, in test_foo
    self.fail('foo() raised ValueError')
AssertionError: foo() raised ValueError

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (failures=1)

----------
components: Library (Lib)
files: foo.py
messages: 380244
nosy: dseomn
priority: normal
severity: normal
status: open
title: unittest hides traceback frames in chained exceptions
type: behavior
versions: Python 3.8
Added file: https://bugs.python.org/file49563/foo.py

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue42247>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to