[pypy-commit] pypy py3k-faulthandler: Translation test

arigo pypy.commits at gmail.com
Sun Sep 25 13:41:40 EDT 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: py3k-faulthandler
Changeset: r87374:a38dd2ec24eb
Date: 2016-09-25 19:41 +0200
http://bitbucket.org/pypy/pypy/changeset/a38dd2ec24eb/

Log:	Translation test

diff --git a/rpython/rlib/rvmprof/test/test_traceback.py b/rpython/rlib/rvmprof/test/test_traceback.py
--- a/rpython/rlib/rvmprof/test/test_traceback.py
+++ b/rpython/rlib/rvmprof/test/test_traceback.py
@@ -1,5 +1,7 @@
+import re
 from rpython.rlib import rvmprof
 from rpython.rlib.rvmprof.traceback import traceback
+from rpython.translator.interactive import Translation
 
 
 def test_direct():
@@ -29,3 +31,35 @@
     assert seen == [(0, code1, 42),
                     (1, code1, 42),
                     (2, code1, 42)]
+
+def test_compiled():
+    class MyCode:
+        pass
+    def get_name(mycode):
+        raise NotImplementedError
+    rvmprof.register_code_object_class(MyCode, get_name)
+
+    @rvmprof.vmprof_execute_code("mycode", lambda code, level: code)
+    def mainloop(code, level):
+        if level > 0:
+            mainloop(code, level - 1)
+        else:
+            traceback(MyCode, my_callback, 42)
+
+    def my_callback(depth, code, arg):
+        print depth, code, arg
+        return 0
+
+    def f(argv):
+        code1 = MyCode()
+        rvmprof.register_code(code1, "foo")
+        mainloop(code1, 2)
+        return 0
+
+    t = Translation(f, None, gc="boehm")
+    t.compile_c()
+    stdout = t.driver.cbuilder.cmdexec('')
+    r = re.compile("(\d+) [<]MyCode object at 0x([0-9a-f]+)[>] 42\n")
+    got = r.findall(stdout)
+    addr = got[0][1]
+    assert got == [("0", addr), ("1", addr), ("2", addr)]


More information about the pypy-commit mailing list