Browse Source

tests: Move heap-realloc-while-locked test from C to Python.

This test for calling gc_realloc() while the GC is locked can be done in
pure Python, so better to do it that way since it can then be tested on
more ports.
pull/3633/merge
Damien George 7 years ago
parent
commit
c607b58efe
  1. 8
      ports/unix/coverage.c
  2. 11
      tests/micropython/heap_lock.py
  3. 1
      tests/micropython/heap_lock.py.exp
  4. 1
      tests/unix/extra_coverage.py.exp

8
ports/unix/coverage.c

@ -169,14 +169,8 @@ STATIC mp_obj_t extra_coverage(void) {
gc_free(NULL);
gc_unlock();
// calling gc_realloc while GC is locked
void *p = gc_alloc(4, false);
gc_lock();
mp_printf(&mp_plat_print, "%p\n", gc_realloc(p, 8, true));
gc_unlock();
// using gc_realloc to resize to 0, which means free the memory
p = gc_alloc(4, false);
void *p = gc_alloc(4, false);
mp_printf(&mp_plat_print, "%p\n", gc_realloc(p, 0, false));
// calling gc_nbytes with a non-heap pointer

11
tests/micropython/heap_lock.py

@ -2,13 +2,24 @@
import micropython
l = []
l2 = list(range(100))
micropython.heap_lock()
# general allocation on the heap
try:
print([])
except MemoryError:
print('MemoryError')
# expansion of a heap block
try:
l.extend(l2)
except MemoryError:
print('MemoryError')
micropython.heap_unlock()
# check that allocation works after an unlock
print([])

1
tests/micropython/heap_lock.py.exp

@ -1,2 +1,3 @@
MemoryError
MemoryError
[]

1
tests/unix/extra_coverage.py.exp

@ -16,7 +16,6 @@ abc
# GC
0
0
0
# vstr
tests
sts

Loading…
Cancel
Save