tests/micropython: Get heapalloc_traceback test running on baremetal.
When printing exceptions from files sent to a target by pyboard.py the filename in the exception is <stdin>, which differs to when running the script on the PC. So we strip out the filename to make the outputs the same on all targets (see also misc/print_exception.py test).
This commit is contained in:
parent
a5b3c7e7f9
commit
7081ea4119
@ -2,6 +2,7 @@
|
||||
|
||||
import micropython
|
||||
import sys
|
||||
import uio
|
||||
|
||||
# preallocate exception instance with some room for a traceback
|
||||
global_exc = StopIteration()
|
||||
@ -15,10 +16,21 @@ def test():
|
||||
global_exc.__traceback__ = None
|
||||
try:
|
||||
raise global_exc
|
||||
except StopIteration as e:
|
||||
sys.print_exception(e)
|
||||
except StopIteration:
|
||||
print('StopIteration')
|
||||
|
||||
# call test() with heap allocation disabled
|
||||
micropython.heap_lock()
|
||||
test()
|
||||
micropython.heap_unlock()
|
||||
|
||||
# print the exception that was raised
|
||||
buf = uio.StringIO()
|
||||
sys.print_exception(global_exc, buf)
|
||||
for l in buf.getvalue().split("\n"):
|
||||
# uPy on pyboard prints <stdin> as file, so remove filename.
|
||||
if l.startswith(" File "):
|
||||
l = l.split('"')
|
||||
print(l[0], l[2])
|
||||
else:
|
||||
print(l)
|
||||
|
@ -1,3 +1,5 @@
|
||||
StopIteration
|
||||
Traceback (most recent call last):
|
||||
File "micropython/heapalloc_traceback.py", line 17, in test
|
||||
File , line 18, in test
|
||||
StopIteration:
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user