[pypy-commit] pypy default: Move TestBoehmTranslated into test_rawrefcount_boehm.py, where it
arigo
pypy.commits at gmail.com
Tue Jan 3 02:25:27 EST 2017
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r89326:57ce16a5cccf
Date: 2017-01-03 08:24 +0100
http://bitbucket.org/pypy/pypy/changeset/57ce16a5cccf/
Log: Move TestBoehmTranslated into test_rawrefcount_boehm.py, where it
belongs, to be properly skipped by setup_module() if needed
diff --git a/rpython/rlib/test/test_rawrefcount.py b/rpython/rlib/test/test_rawrefcount.py
--- a/rpython/rlib/test/test_rawrefcount.py
+++ b/rpython/rlib/test/test_rawrefcount.py
@@ -1,7 +1,7 @@
import weakref
from rpython.rlib import rawrefcount, objectmodel, rgc
from rpython.rlib.rawrefcount import REFCNT_FROM_PYPY, REFCNT_FROM_PYPY_LIGHT
-from rpython.rtyper.lltypesystem import lltype, llmemory
+from rpython.rtyper.lltypesystem import lltype
from rpython.rtyper.annlowlevel import llhelper
from rpython.translator.c.test.test_standalone import StandaloneTests
from rpython.config.translationoption import get_combined_translation_config
@@ -286,55 +286,3 @@
t, cbuilder = self.compile(entry_point)
data = cbuilder.cmdexec('hi there')
assert data.startswith('OK!\n')
-
-
-class TestBoehmTranslated(StandaloneTests):
-
- def test_full_translation(self):
-
- def make_ob():
- p = W_Root(42)
- ob = lltype.malloc(PyObjectS, flavor='raw', zero=True)
- rawrefcount.create_link_pypy(p, ob)
- ob.c_ob_refcnt += REFCNT_FROM_PYPY
- assert rawrefcount.from_obj(PyObject, p) == ob
- assert rawrefcount.to_obj(W_Root, ob) == p
- return ob
-
- prebuilt_p = W_Root(-42)
- prebuilt_ob = lltype.malloc(PyObjectS, flavor='raw', zero=True,
- immortal=True)
-
- def entry_point(argv):
- rawrefcount.create_link_pypy(prebuilt_p, prebuilt_ob)
- prebuilt_ob.c_ob_refcnt += REFCNT_FROM_PYPY
- oblist = [make_ob() for i in range(50)]
- rgc.collect()
- deadlist = []
- while True:
- ob = rawrefcount.next_dead(PyObject)
- if not ob: break
- if ob.c_ob_refcnt != 1:
- print "next_dead().ob_refcnt != 1"
- return 1
- deadlist.append(ob)
- if len(deadlist) == 0:
- print "no dead object"
- return 1
- if len(deadlist) < 30:
- print "not enough dead objects"
- return 1
- for ob in deadlist:
- if ob not in oblist:
- print "unexpected value for dead pointer"
- return 1
- oblist.remove(ob)
- print "OK!"
- lltype.free(ob, flavor='raw')
- return 0
-
- self.config = get_combined_translation_config(translating=True)
- self.config.translation.gc = "boehm"
- t, cbuilder = self.compile(entry_point)
- data = cbuilder.cmdexec('hi there')
- assert data.startswith('OK!\n')
diff --git a/rpython/rlib/test/test_rawrefcount_boehm.py b/rpython/rlib/test/test_rawrefcount_boehm.py
--- a/rpython/rlib/test/test_rawrefcount_boehm.py
+++ b/rpython/rlib/test/test_rawrefcount_boehm.py
@@ -1,6 +1,12 @@
import itertools, os, subprocess, py
from hypothesis import given, strategies
from rpython.tool.udir import udir
+from rpython.rlib import rawrefcount, rgc
+from rpython.rlib.rawrefcount import REFCNT_FROM_PYPY
+from rpython.rlib.test.test_rawrefcount import W_Root, PyObject, PyObjectS
+from rpython.rtyper.lltypesystem import lltype
+from rpython.translator.c.test.test_standalone import StandaloneTests
+from rpython.config.translationoption import get_combined_translation_config
def compile_test(basename):
@@ -248,3 +254,55 @@
del links_p2g[p]
else:
assert False, repr(line)
+
+
+class TestBoehmTranslated(StandaloneTests):
+
+ def test_full_translation(self):
+
+ def make_ob():
+ p = W_Root(42)
+ ob = lltype.malloc(PyObjectS, flavor='raw', zero=True)
+ rawrefcount.create_link_pypy(p, ob)
+ ob.c_ob_refcnt += REFCNT_FROM_PYPY
+ assert rawrefcount.from_obj(PyObject, p) == ob
+ assert rawrefcount.to_obj(W_Root, ob) == p
+ return ob
+
+ prebuilt_p = W_Root(-42)
+ prebuilt_ob = lltype.malloc(PyObjectS, flavor='raw', zero=True,
+ immortal=True)
+
+ def entry_point(argv):
+ rawrefcount.create_link_pypy(prebuilt_p, prebuilt_ob)
+ prebuilt_ob.c_ob_refcnt += REFCNT_FROM_PYPY
+ oblist = [make_ob() for i in range(50)]
+ rgc.collect()
+ deadlist = []
+ while True:
+ ob = rawrefcount.next_dead(PyObject)
+ if not ob: break
+ if ob.c_ob_refcnt != 1:
+ print "next_dead().ob_refcnt != 1"
+ return 1
+ deadlist.append(ob)
+ if len(deadlist) == 0:
+ print "no dead object"
+ return 1
+ if len(deadlist) < 30:
+ print "not enough dead objects"
+ return 1
+ for ob in deadlist:
+ if ob not in oblist:
+ print "unexpected value for dead pointer"
+ return 1
+ oblist.remove(ob)
+ print "OK!"
+ lltype.free(ob, flavor='raw')
+ return 0
+
+ self.config = get_combined_translation_config(translating=True)
+ self.config.translation.gc = "boehm"
+ t, cbuilder = self.compile(entry_point)
+ data = cbuilder.cmdexec('hi there')
+ assert data.startswith('OK!\n')
More information about the pypy-commit
mailing list