Author: Richard Plangger <planri...@gmail.com>
Branch: cpyext-injection
Changeset: r87877:7634141bc595
Date: 2016-10-19 16:23 +0200
http://bitbucket.org/pypy/pypy/changeset/7634141bc595/

Log:    (arigato, plan_rich) add a new test to return a pypy object

diff --git a/pypy/module/cpyext/pyobject.py b/pypy/module/cpyext/pyobject.py
--- a/pypy/module/cpyext/pyobject.py
+++ b/pypy/module/cpyext/pyobject.py
@@ -340,3 +340,12 @@
 @cpython_api([rffi.VOIDP], lltype.Signed, error=CANNOT_FAIL)
 def _Py_HashPointer(space, ptr):
     return rffi.cast(lltype.Signed, ptr)
+
+def _has_a_pyobj(space, w_obj):
+    """ NOT_RPYTHON only for tests """
+    assert w_obj is not None
+    assert not is_pyobj(w_obj)
+    py_obj = rawrefcount.from_obj(PyObject, w_obj)
+    if not py_obj:
+        return False
+    return True
diff --git a/pypy/module/cpyext/test/test_injection.py 
b/pypy/module/cpyext/test/test_injection.py
--- a/pypy/module/cpyext/test/test_injection.py
+++ b/pypy/module/cpyext/test/test_injection.py
@@ -1,8 +1,17 @@
 from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase
-
+from pypy.module.cpyext.pyobject import _has_a_pyobj
+from pypy.interpreter.gateway import interp2app
 
 class AppTestTypeObject(AppTestCpythonExtensionBase):
 
+    def setup_class(cls):
+        def is_there_an_pyobj_version(space, w_obj):
+            if _has_a_pyobj(space, w_obj):
+                return space.w_True
+            return space.w_False
+        cls.w_is_there_an_pyobj_version = cls.space.wrap(
+                         interp2app(is_there_an_pyobj_version))
+
     def test_getitem_basic(self):
         module = self.import_module(name='injection')
         mything = module.test_mytype()
@@ -15,3 +24,13 @@
         assert mything is Ellipsis
         mything = module.make(15)
         assert mything[-100] == -100+15
+
+    def test_pypy_only_version_of_object(self):
+        module = self.import_module(name='injection')
+        mything = module.make(25)
+        assert not self.is_there_an_pyobj_version(mything)
+        assert mything[100] == 25*100
+        assert not self.is_there_an_pyobj_version(mything)
+        assert mything[-100] == -100+25
+        assert self.is_there_an_pyobj_version(mything)
+
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to