From 26f18b8540b49d592af66361f8df1a03953d1768 Mon Sep 17 00:00:00 2001 From: Irit Katriel Date: Tue, 23 Feb 2021 14:58:47 +0000 Subject: [PATCH] bpo-43146: fix regression in traceback.print_exception(None) (GH-24463) --- Lib/test/test_traceback.py | 18 ++++++++++++++++++ Lib/traceback.py | 4 +++- .../2021-02-06-21-21-35.bpo-43146.MHtb2v.rst | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2021-02-06-21-21-35.bpo-43146.MHtb2v.rst diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index 33bdda02666..2261ea99420 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -232,6 +232,24 @@ class TracebackCases(unittest.TestCase): output = traceback.format_exception_only(Exception("projector")) self.assertEqual(output, ["Exception: projector\n"]) + def test_exception_is_None(self): + NONE_EXC_STRING = 'NoneType: None\n' + excfile = StringIO() + traceback.print_exception(None, None, None, file=excfile) + self.assertEqual(excfile.getvalue(), NONE_EXC_STRING) + + excfile = StringIO() + traceback.print_exc(None, file=excfile) + self.assertEqual(excfile.getvalue(), NONE_EXC_STRING) + + self.assertEqual(traceback.format_exc(None), NONE_EXC_STRING) + self.assertEqual( + traceback.format_exception(None, None, None), [NONE_EXC_STRING]) + self.assertEqual( + traceback.format_exception_only(None), [NONE_EXC_STRING]) + self.assertEqual( + traceback.format_exception_only(None, None), [NONE_EXC_STRING]) + class TracebackFormatTests(unittest.TestCase): diff --git a/Lib/traceback.py b/Lib/traceback.py index 090465a3584..dfb296c5e7b 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -528,7 +528,9 @@ class TracebackException: cause = None if compact: - need_context = cause is None and not e.__suppress_context__ + need_context = (cause is None and + e is not None and + not e.__suppress_context__) else: need_context = True if (e and e.__context__ is not None diff --git a/Misc/NEWS.d/next/Library/2021-02-06-21-21-35.bpo-43146.MHtb2v.rst b/Misc/NEWS.d/next/Library/2021-02-06-21-21-35.bpo-43146.MHtb2v.rst new file mode 100644 index 00000000000..8d213a4138e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-02-06-21-21-35.bpo-43146.MHtb2v.rst @@ -0,0 +1 @@ +Fix recent regression in None argument handling in :mod:`~traceback` module functions. \ No newline at end of file