[pypy-commit] pypy default: Add a pypy-c test for issue #1328

arigo noreply at buildbot.pypy.org
Thu May 1 14:09:41 CEST 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r71131:c7196a03a054
Date: 2014-05-01 14:05 +0200
http://bitbucket.org/pypy/pypy/changeset/c7196a03a054/

Log:	Add a pypy-c test for issue #1328

diff --git a/pypy/module/pypyjit/test_pypy_c/test_cprofile.py b/pypy/module/pypyjit/test_pypy_c/test_cprofile.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/pypyjit/test_pypy_c/test_cprofile.py
@@ -0,0 +1,31 @@
+import py
+from pypy.module.pypyjit.test_pypy_c.test_00_model import BaseTestPyPyC
+
+class TestCProfile(BaseTestPyPyC):
+
+    def test_cprofile_builtin(self):
+        def main(n):
+            import _lsprof
+            prof = _lsprof.Profiler()
+            i = 0
+            lst = []
+            prof.enable()
+            while i < n:
+                lst.append(i)   # ID: append
+                lst.pop()       # ID: pop
+                i += 1
+            prof.disable()
+            return [(entry.code, entry.callcount) for entry in prof.getstats()]
+        #
+        log = self.run(main, [500])
+        assert sorted(log.result) == [
+            ("{method 'append' of 'list' objects}", 500),
+            ("{method 'disable' of '_lsprof.Profiler' objects}", 1),
+            ("{method 'pop' of 'list' objects}", 500),
+            ]
+        for method in ['append', 'pop']:
+            loop, = log.loops_by_id(method)
+            print loop.ops_by_id(method)
+            assert 'call(' not in repr(loop.ops_by_id(method))
+            assert 'call_may_force(' not in repr(loop.ops_by_id(method))
+            assert 'call_cond(' in repr(loop.ops_by_id(method))


More information about the pypy-commit mailing list