summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--tests/misc/print_exception.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/misc/print_exception.py b/tests/misc/print_exception.py
new file mode 100644
index 0000000000..e48e00683e
--- /dev/null
+++ b/tests/misc/print_exception.py
@@ -0,0 +1,21 @@
+import io
+import sys
+if hasattr(sys, 'print_exception'):
+ print_exception = sys.print_exception
+else:
+ import traceback
+ print_exception = lambda e, f: traceback.print_exception(None, e, None, file=f)
+
+try:
+ 1/0
+except Exception as e:
+ print('caught')
+ buf = io.StringIO()
+ print_exception(e, buf)
+ s = buf.getvalue()
+ for l in s.split("\n"):
+ # uPy and CPy tracebacks differ in that CPy prints a source line for
+ # each traceback entry. In this case, we know that offending line
+ # has 4-space indent, so filter it out.
+ if not l.startswith(" "):
+ print(l)