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