tests/heapalloc_exc_raise.py: Heap alloc test for raising/catching exc.
This commit is contained in:
parent
3d739eb398
commit
6fc6f10b1e
23
tests/micropython/heapalloc_exc_raise.py
Normal file
23
tests/micropython/heapalloc_exc_raise.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Test that we can raise and catch (preallocated) exception
|
||||||
|
# without memory allocation.
|
||||||
|
import micropython
|
||||||
|
|
||||||
|
e = ValueError("error")
|
||||||
|
|
||||||
|
def func():
|
||||||
|
try:
|
||||||
|
# This works as is because traceback is not allocated
|
||||||
|
# if not possible (heap is locked, no memory). If heap
|
||||||
|
# is not locked, this would allocate a traceback entry.
|
||||||
|
# To avoid that, traceback should be warmed up (by raising
|
||||||
|
# it once after creation) and then cleared before each
|
||||||
|
# raise with:
|
||||||
|
# e.__traceback__ = None
|
||||||
|
raise e
|
||||||
|
except Exception as e2:
|
||||||
|
print(e2)
|
||||||
|
|
||||||
|
micropython.heap_lock()
|
||||||
|
func()
|
||||||
|
print("ok")
|
||||||
|
micropython.heap_unlock()
|
2
tests/micropython/heapalloc_exc_raise.py.exp
Normal file
2
tests/micropython/heapalloc_exc_raise.py.exp
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
error
|
||||||
|
ok
|
Loading…
Reference in New Issue
Block a user