[pypy-commit] pypy less-gettestobjspace: Progress: cpyext module.

amauryfa noreply at buildbot.pypy.org
Mon Oct 29 22:40:11 CET 2012


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: less-gettestobjspace
Changeset: r58609:ed6f80ef63c3
Date: 2012-10-28 23:02 +0100
http://bitbucket.org/pypy/pypy/changeset/ed6f80ef63c3/

Log:	Progress: cpyext module.

diff --git a/pypy/module/cpyext/test/conftest.py b/pypy/module/cpyext/test/conftest.py
--- a/pypy/module/cpyext/test/conftest.py
+++ b/pypy/module/cpyext/test/conftest.py
@@ -1,6 +1,5 @@
 import py
 import pytest
-from pypy.conftest import gettestobjspace
 
 def pytest_ignore_collect(path, config):
     if config.option.runappdirect:
@@ -10,7 +9,7 @@
     return False
 
 def pytest_funcarg__space(request):
-    return gettestobjspace(usemodules=['cpyext', 'thread', '_rawffi', 'array'])
+    return request.cls.api
 
 def pytest_funcarg__api(request):
     return request.cls.api
diff --git a/pypy/module/cpyext/test/test_api.py b/pypy/module/cpyext/test/test_api.py
--- a/pypy/module/cpyext/test/test_api.py
+++ b/pypy/module/cpyext/test/test_api.py
@@ -1,5 +1,4 @@
 import py
-from pypy.conftest import gettestobjspace
 from pypy.rpython.lltypesystem import rffi, lltype
 from pypy.interpreter.baseobjspace import W_Root
 from pypy.module.cpyext.state import State
@@ -7,7 +6,6 @@
 from pypy.module.cpyext.test.test_cpyext import freeze_refcnts, LeakCheckingTest
 PyObject = api.PyObject
 from pypy.interpreter.error import OperationError
-from pypy.module.cpyext.state import State
 import os
 
 @api.cpython_api([PyObject], lltype.Void)
@@ -19,9 +17,7 @@
 
 class BaseApiTest(LeakCheckingTest):
     def setup_class(cls):
-        cls.space = space = gettestobjspace(usemodules=['cpyext', 'thread', '_rawffi',
-                                                        'array'])
-
+        space = cls.space
         # warm up reference counts:
         # - the posix module allocates a HCRYPTPROV on Windows
         # - writing to stdout and stderr allocates a file lock
diff --git a/pypy/module/cpyext/test/test_arraymodule.py b/pypy/module/cpyext/test/test_arraymodule.py
--- a/pypy/module/cpyext/test/test_arraymodule.py
+++ b/pypy/module/cpyext/test/test_arraymodule.py
@@ -1,4 +1,3 @@
-from pypy.conftest import gettestobjspace
 from pypy.module.cpyext.test.test_cpyext import AppTestCpythonExtensionBase
 
 import py
diff --git a/pypy/module/cpyext/test/test_cpyext.py b/pypy/module/cpyext/test/test_cpyext.py
--- a/pypy/module/cpyext/test/test_cpyext.py
+++ b/pypy/module/cpyext/test/test_cpyext.py
@@ -4,7 +4,6 @@
 
 import py
 
-from pypy.conftest import gettestobjspace
 from pypy.interpreter.error import OperationError
 from pypy.interpreter.gateway import interp2app
 from pypy.rpython.lltypesystem import rffi, lltype, ll2ctypes
@@ -33,28 +32,6 @@
         assert 'PyModule_Check' in api.FUNCTIONS
         assert api.FUNCTIONS['PyModule_Check'].argtypes == [api.PyObject]
 
-class AppTestApi:
-    def setup_class(cls):
-        cls.space = gettestobjspace(usemodules=['cpyext', 'thread', '_rawffi', 'array'])
-        from pypy.rlib.clibffi import get_libc_name
-        cls.w_libc = cls.space.wrap(get_libc_name())
-
-    def test_load_error(self):
-        import cpyext
-        raises(ImportError, cpyext.load_module, "missing.file", "foo")
-        raises(ImportError, cpyext.load_module, self.libc, "invalid.function")
-
-    def test_dllhandle(self):
-        import sys
-        if sys.platform != "win32" or sys.version_info < (2, 6):
-            skip("Windows Python >= 2.6 only")
-        assert sys.dllhandle
-        assert sys.dllhandle.getaddressindll('PyPyErr_NewException')
-        import ctypes # slow
-        PyUnicode_GetDefaultEncoding = ctypes.pythonapi.PyPyUnicode_GetDefaultEncoding
-        PyUnicode_GetDefaultEncoding.restype = ctypes.c_char_p
-        assert PyUnicode_GetDefaultEncoding() == 'ascii'
-
 def compile_module(space, modname, **kwds):
     """
     Build an extension module and return the filename of the resulting native
@@ -92,6 +69,9 @@
     self.frozen_ll2callocations = set(ll2ctypes.ALLOCATED.values())
 
 class LeakCheckingTest(object):
+    """Base class for all cpyext tests."""
+    spaceconfig = dict(usemodules=['cpyext', 'thread', '_rawffi', 'array',
+                                   'itertools'])
     enable_leak_checking = True
 
     @staticmethod
@@ -164,10 +144,30 @@
         # enabled automatically by pypy.conftest.
         return leaking
 
+class AppTestApi(LeakCheckingTest):
+    def setup_class(cls):
+        from pypy.rlib.clibffi import get_libc_name
+        cls.w_libc = cls.space.wrap(get_libc_name())
+
+    def test_load_error(self):
+        import cpyext
+        raises(ImportError, cpyext.load_module, "missing.file", "foo")
+        raises(ImportError, cpyext.load_module, self.libc, "invalid.function")
+
+    def test_dllhandle(self):
+        import sys
+        if sys.platform != "win32" or sys.version_info < (2, 6):
+            skip("Windows Python >= 2.6 only")
+        assert sys.dllhandle
+        assert sys.dllhandle.getaddressindll('PyPyErr_NewException')
+        import ctypes # slow
+        PyUnicode_GetDefaultEncoding = ctypes.pythonapi.PyPyUnicode_GetDefaultEncoding
+        PyUnicode_GetDefaultEncoding.restype = ctypes.c_char_p
+        assert PyUnicode_GetDefaultEncoding() == 'ascii'
+
 class AppTestCpythonExtensionBase(LeakCheckingTest):
     
     def setup_class(cls):
-        cls.space = gettestobjspace(usemodules=['cpyext', 'thread', '_rawffi', 'array'])
         cls.space.getbuiltinmodule("cpyext")
         from pypy.module.imp.importing import importhook
         importhook(cls.space, "os") # warm up reference counts
diff --git a/pypy/module/cpyext/test/test_setobject.py b/pypy/module/cpyext/test/test_setobject.py
--- a/pypy/module/cpyext/test/test_setobject.py
+++ b/pypy/module/cpyext/test/test_setobject.py
@@ -3,7 +3,6 @@
 from pypy.module.cpyext.pyobject import PyObject, PyObjectP, make_ref, from_ref
 from pypy.module.cpyext.test.test_api import BaseApiTest
 from pypy.rpython.lltypesystem import rffi, lltype
-from pypy.conftest import gettestobjspace
 
 
 class TestTupleObject(BaseApiTest):
diff --git a/pypy/module/cpyext/test/test_tupleobject.py b/pypy/module/cpyext/test/test_tupleobject.py
--- a/pypy/module/cpyext/test/test_tupleobject.py
+++ b/pypy/module/cpyext/test/test_tupleobject.py
@@ -3,7 +3,7 @@
 from pypy.module.cpyext.pyobject import PyObject, PyObjectP, make_ref, from_ref
 from pypy.module.cpyext.test.test_api import BaseApiTest
 from pypy.rpython.lltypesystem import rffi, lltype
-from pypy.conftest import gettestobjspace
+
 
 class TestTupleObject(BaseApiTest):
 


More information about the pypy-commit mailing list