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