From 1f43d49f9efa22d81e10be7bd20933986b4a3320 Mon Sep 17 00:00:00 2001 From: Damien George <damien.p.george@gmail.com> Date: Mon, 21 Nov 2016 17:39:23 +1100 Subject: [PATCH] tests/micropython: Move alloc-less traceback test to separate test file. The native emitter doesn't provide proper traceback info so this test should not be run in that case. --- tests/micropython/heapalloc.py | 15 ------------ tests/micropython/heapalloc.py.exp | 3 --- tests/micropython/heapalloc_traceback.py | 24 ++++++++++++++++++++ tests/micropython/heapalloc_traceback.py.exp | 3 +++ tests/run-tests | 1 + 5 files changed, 28 insertions(+), 18 deletions(-) create mode 100644 tests/micropython/heapalloc_traceback.py create mode 100644 tests/micropython/heapalloc_traceback.py.exp diff --git a/tests/micropython/heapalloc.py b/tests/micropython/heapalloc.py index c19893a00..62f26df6a 100644 --- a/tests/micropython/heapalloc.py +++ b/tests/micropython/heapalloc.py @@ -1,7 +1,6 @@ # check that we can do certain things without allocating heap memory import micropython -import sys def f1(a): print(a) @@ -18,13 +17,6 @@ def f3(a, b, c, d): global_var = 1 -# preallocate exception instance with some room for a traceback -global_exc = StopIteration() -try: - raise global_exc -except: - pass - def test(): global global_var, global_exc global_var = 2 # set an existing global variable @@ -36,13 +28,6 @@ def test(): f2(i, i) # 2 args f3(1, 2, 3, 4) # function with lots of local state - # test that we can generate a traceback without allocating - global_exc.__traceback__ = None - try: - raise global_exc - except StopIteration as e: - sys.print_exception(e) - # call test() with heap allocation disabled micropython.heap_lock() test() diff --git a/tests/micropython/heapalloc.py.exp b/tests/micropython/heapalloc.py.exp index 3d5825f5a..c8cffe183 100644 --- a/tests/micropython/heapalloc.py.exp +++ b/tests/micropython/heapalloc.py.exp @@ -9,6 +9,3 @@ 1 2 1 1 1 2 3 4 10 -Traceback (most recent call last): - File "micropython/heapalloc.py", line 42, in test -StopIteration: diff --git a/tests/micropython/heapalloc_traceback.py b/tests/micropython/heapalloc_traceback.py new file mode 100644 index 000000000..9f43da259 --- /dev/null +++ b/tests/micropython/heapalloc_traceback.py @@ -0,0 +1,24 @@ +# test that we can generate a traceback without allocating + +import micropython +import sys + +# preallocate exception instance with some room for a traceback +global_exc = StopIteration() +try: + raise global_exc +except: + pass + +def test(): + global global_exc + global_exc.__traceback__ = None + try: + raise global_exc + except StopIteration as e: + sys.print_exception(e) + +# call test() with heap allocation disabled +micropython.heap_lock() +test() +micropython.heap_unlock() diff --git a/tests/micropython/heapalloc_traceback.py.exp b/tests/micropython/heapalloc_traceback.py.exp new file mode 100644 index 000000000..16284f0da --- /dev/null +++ b/tests/micropython/heapalloc_traceback.py.exp @@ -0,0 +1,3 @@ +Traceback (most recent call last): + File "micropython/heapalloc_traceback.py", line 17, in test +StopIteration: diff --git a/tests/run-tests b/tests/run-tests index 4ac7d8e28..3898fb7aa 100755 --- a/tests/run-tests +++ b/tests/run-tests @@ -291,6 +291,7 @@ def run_tests(pyb, tests, args): skip_tests.add('misc/rge_sm.py') # requires yield skip_tests.add('misc/print_exception.py') # because native doesn't have proper traceback info skip_tests.add('misc/sys_exc_info.py') # sys.exc_info() is not supported for native + skip_tests.add('micropython/heapalloc_traceback.py') # because native doesn't have proper traceback info for test_file in tests: test_file = test_file.replace('\\', '/') -- GitLab