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 <jim.mussared@gmail.com>
pull/598/head
Andrzej Kowalczyk 2023-01-28 17:28:56 +01:00 zatwierdzone przez Jim Mussared
rodzic a5ef231e7d
commit 863a018b89
3 zmienionych plików z 17 dodań i 4 usunięć

Wyświetl plik

@ -1,3 +1,3 @@
metadata(version="0.10.1")
metadata(version="0.10.2")
package("unittest")

Wyświetl plik

@ -0,0 +1,13 @@
import unittest
def broken_func():
raise ValueError("uh oh!")
def test_func():
broken_func()
if __name__ == "__main__":
unittest.main()

Wyświetl plik

@ -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