[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