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:
Damien George 2016-12-15 11:11:57 +11:00
parent a5b3c7e7f9
commit 7081ea4119
2 changed files with 17 additions and 3 deletions

View File

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

View File

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