From 679c0c4c835371552fb0bc9b65a4893ceaaf7471 Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 10 Nov 2016 22:54:55 +1100 Subject: tests/micropython: Add test for import from within viper function. --- tests/micropython/viper_import.py | 10 ++++++++++ tests/micropython/viper_import.py.exp | 2 ++ 2 files changed, 12 insertions(+) create mode 100644 tests/micropython/viper_import.py create mode 100644 tests/micropython/viper_import.py.exp (limited to 'tests/micropython') diff --git a/tests/micropython/viper_import.py b/tests/micropython/viper_import.py new file mode 100644 index 000000000..987800744 --- /dev/null +++ b/tests/micropython/viper_import.py @@ -0,0 +1,10 @@ +# test import within viper function + +@micropython.viper +def f(): + import micropython + print(micropython.const(1)) + + from micropython import const + print(const(2)) +f() diff --git a/tests/micropython/viper_import.py.exp b/tests/micropython/viper_import.py.exp new file mode 100644 index 000000000..1191247b6 --- /dev/null +++ b/tests/micropython/viper_import.py.exp @@ -0,0 +1,2 @@ +1 +2 -- cgit v1.2.3 From d70f87aaa2fe31b099359b4b27444f3b289cdb8c Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 21 Nov 2016 17:10:17 +1100 Subject: tests/micropython: Add test for creating traceback without allocation. --- tests/micropython/heapalloc.py | 17 ++++++++++++++++- tests/micropython/heapalloc.py.exp | 3 +++ 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'tests/micropython') diff --git a/tests/micropython/heapalloc.py b/tests/micropython/heapalloc.py index a651158ca..c19893a00 100644 --- a/tests/micropython/heapalloc.py +++ b/tests/micropython/heapalloc.py @@ -1,6 +1,7 @@ # check that we can do certain things without allocating heap memory import micropython +import sys def f1(a): print(a) @@ -17,8 +18,15 @@ 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 global_var, global_exc global_var = 2 # set an existing global variable for i in range(2): # for loop f1(i) # function call @@ -28,6 +36,13 @@ 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 c8cffe183..3d5825f5a 100644 --- a/tests/micropython/heapalloc.py.exp +++ b/tests/micropython/heapalloc.py.exp @@ -9,3 +9,6 @@ 1 2 1 1 1 2 3 4 10 +Traceback (most recent call last): + File "micropython/heapalloc.py", line 42, in test +StopIteration: -- cgit v1.2.3 From 1f43d49f9efa22d81e10be7bd20933986b4a3320 Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 21 Nov 2016 17:39:23 +1100 Subject: 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 (limited to 'tests/micropython') 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('\\', '/') -- cgit v1.2.3 From 7081ea4119005aed320c644a9464f1f241b0b86e Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 15 Dec 2016 11:11:57 +1100 Subject: 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 , 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). --- tests/micropython/heapalloc_traceback.py | 16 ++++++++++++++-- tests/micropython/heapalloc_traceback.py.exp | 4 +++- 2 files changed, 17 insertions(+), 3 deletions(-) (limited to 'tests/micropython') diff --git a/tests/micropython/heapalloc_traceback.py b/tests/micropython/heapalloc_traceback.py index 9f43da259..808df0225 100644 --- a/tests/micropython/heapalloc_traceback.py +++ b/tests/micropython/heapalloc_traceback.py @@ -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 as file, so remove filename. + if l.startswith(" File "): + l = l.split('"') + print(l[0], l[2]) + else: + print(l) diff --git a/tests/micropython/heapalloc_traceback.py.exp b/tests/micropython/heapalloc_traceback.py.exp index 16284f0da..9ba10948d 100644 --- a/tests/micropython/heapalloc_traceback.py.exp +++ b/tests/micropython/heapalloc_traceback.py.exp @@ -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: + -- cgit v1.2.3 From 05aebb920614cad89b4a626b02e74eb334b732aa Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Sun, 25 Dec 2016 00:50:27 +0300 Subject: tests/heapalloc_inst_call: Test for no alloc for simple object calls. --- tests/micropython/heapalloc_inst_call.py | 31 ++++++++++++++++++++++++++++ tests/micropython/heapalloc_inst_call.py.exp | 4 ++++ 2 files changed, 35 insertions(+) create mode 100644 tests/micropython/heapalloc_inst_call.py create mode 100644 tests/micropython/heapalloc_inst_call.py.exp (limited to 'tests/micropython') diff --git a/tests/micropython/heapalloc_inst_call.py b/tests/micropython/heapalloc_inst_call.py new file mode 100644 index 000000000..3cc497b73 --- /dev/null +++ b/tests/micropython/heapalloc_inst_call.py @@ -0,0 +1,31 @@ +# Test that calling clazz.__call__() with up to at least 3 arguments +# doesn't require heap allocation. +import micropython + +class Foo0: + def __call__(self): + print("__call__") + +class Foo1: + def __call__(self, a): + print("__call__", a) + +class Foo2: + def __call__(self, a, b): + print("__call__", a, b) + +class Foo3: + def __call__(self, a, b, c): + print("__call__", a, b, c) + +f0 = Foo0() +f1 = Foo1() +f2 = Foo2() +f3 = Foo3() + +micropython.heap_lock() +f0() +f1(1) +f2(1, 2) +f3(1, 2, 3) +micropython.heap_unlock() diff --git a/tests/micropython/heapalloc_inst_call.py.exp b/tests/micropython/heapalloc_inst_call.py.exp new file mode 100644 index 000000000..0b06bb2c9 --- /dev/null +++ b/tests/micropython/heapalloc_inst_call.py.exp @@ -0,0 +1,4 @@ +__call__ +__call__ 1 +__call__ 1 2 +__call__ 1 2 3 -- cgit v1.2.3 From eae819c0ed1cdfba33820e06292fab348ec4756d Mon Sep 17 00:00:00 2001 From: Rami Ali Date: Wed, 28 Dec 2016 17:29:52 +1100 Subject: tests/micropython: Add test for micropython.stack_use() function. --- tests/micropython/stack_use.py | 7 +++++++ tests/micropython/stack_use.py.exp | 1 + 2 files changed, 8 insertions(+) create mode 100644 tests/micropython/stack_use.py create mode 100644 tests/micropython/stack_use.py.exp (limited to 'tests/micropython') diff --git a/tests/micropython/stack_use.py b/tests/micropython/stack_use.py new file mode 100644 index 000000000..bc714755a --- /dev/null +++ b/tests/micropython/stack_use.py @@ -0,0 +1,7 @@ +# tests stack_use function in micropython module +import micropython + +if not hasattr(micropython, 'stack_use'): + print('SKIP') +else: + print(type(micropython.stack_use())) # output varies diff --git a/tests/micropython/stack_use.py.exp b/tests/micropython/stack_use.py.exp new file mode 100644 index 000000000..fe37ceaa1 --- /dev/null +++ b/tests/micropython/stack_use.py.exp @@ -0,0 +1 @@ + -- cgit v1.2.3