From 863a018b892f0bf901fa09844aa3428d5a5a00c1 Mon Sep 17 00:00:00 2001 From: Andrzej Kowalczyk Date: Sat, 28 Jan 2023 17:28:56 +0100 Subject: [PATCH] unittest: Remove dependence on sys.exc_info. This is not included by default in most builds, and isn't necessary for this module anyway. Also fix the local variable shadowing the traceback module in _capture_exc. Added test for both (works on CPython and MicroPython). Version bump to 0.10.2. Signed-off-by: Jim Mussared --- python-stdlib/unittest/manifest.py | 2 +- python-stdlib/unittest/tests/test_exception.py | 13 +++++++++++++ python-stdlib/unittest/unittest/__init__.py | 6 +++--- 3 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 python-stdlib/unittest/tests/test_exception.py diff --git a/python-stdlib/unittest/manifest.py b/python-stdlib/unittest/manifest.py index 4e32360d..8e419b63 100644 --- a/python-stdlib/unittest/manifest.py +++ b/python-stdlib/unittest/manifest.py @@ -1,3 +1,3 @@ -metadata(version="0.10.1") +metadata(version="0.10.2") package("unittest") diff --git a/python-stdlib/unittest/tests/test_exception.py b/python-stdlib/unittest/tests/test_exception.py new file mode 100644 index 00000000..470ffdcc --- /dev/null +++ b/python-stdlib/unittest/tests/test_exception.py @@ -0,0 +1,13 @@ +import unittest + + +def broken_func(): + raise ValueError("uh oh!") + + +def test_func(): + broken_func() + + +if __name__ == "__main__": + unittest.main() diff --git a/python-stdlib/unittest/unittest/__init__.py b/python-stdlib/unittest/unittest/__init__.py index 81b244dd..ac24e753 100644 --- a/python-stdlib/unittest/unittest/__init__.py +++ b/python-stdlib/unittest/unittest/__init__.py @@ -332,12 +332,12 @@ class TestResult: return self -def _capture_exc(exc, traceback): +def _capture_exc(exc, exc_traceback): buf = io.StringIO() if hasattr(sys, "print_exception"): sys.print_exception(exc, buf) elif traceback is not None: - traceback.print_exception(None, exc, traceback, file=buf) + traceback.print_exception(None, exc, exc_traceback, file=buf) return buf.getvalue() @@ -402,7 +402,7 @@ def _run_suite(c, test_result: TestResult, suite_name=""): test_result.skipped.append((name, c, reason)) except Exception as ex: _handle_test_exception( - current_test=(name, c), test_result=test_result, exc_info=sys.exc_info() + current_test=(name, c), test_result=test_result, exc_info=(type(ex), ex, None) ) # Uncomment to investigate failure in detail # raise