diff options
Diffstat (limited to 'tests/misc/print_exception.py')
-rw-r--r-- | tests/misc/print_exception.py | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/tests/misc/print_exception.py b/tests/misc/print_exception.py index e65b8d1ac..4e23bf154 100644 --- a/tests/misc/print_exception.py +++ b/tests/misc/print_exception.py @@ -6,19 +6,35 @@ else: import traceback print_exception = lambda e, f: traceback.print_exception(None, e, None, file=f) -try: - XXX -except Exception as e: - print('caught') +def print_exc(e): buf = io.StringIO() print_exception(e, buf) s = buf.getvalue() for l in s.split("\n"): # uPy on pyboard prints <stdin> as file, so remove filename. if l.startswith(" File "): - print(l[:8], l[-23:]) + l = l.split('"') + print(l[0], l[2]) # 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. elif not l.startswith(" "): print(l) + +# basic exception message +try: + XXX +except Exception as e: + print('caught') + print_exc(e) + +# exception message with more than 1 source-code line +def f(): + g() +def g(): + YYY +try: + f() +except Exception as e: + print('caught') + print_exc(e) |