Author: Armin Rigo <[email protected]>
Branch: stacklet
Changeset: r46793:f7a15e59e447
Date: 2011-08-26 16:43 +0200
http://bitbucket.org/pypy/pypy/changeset/f7a15e59e447/
Log: Enable the _continuation module by default, but also adds logic to
disable it and to skip all tests on unsupported platforms.
diff --git a/pypy/config/pypyoption.py b/pypy/config/pypyoption.py
--- a/pypy/config/pypyoption.py
+++ b/pypy/config/pypyoption.py
@@ -33,7 +33,8 @@
"struct", "_hashlib", "_md5", "_sha", "_minimal_curses", "cStringIO",
"thread", "itertools", "pyexpat", "_ssl", "cpyext", "array",
"_bisect", "binascii", "_multiprocessing", '_warnings',
- "_collections", "_multibytecodec", "micronumpy", "_ffi"]
+ "_collections", "_multibytecodec", "micronumpy", "_ffi",
+ "_continuation"]
))
translation_modules = default_modules.copy()
@@ -99,6 +100,7 @@
"_ssl" : ["pypy.module._ssl.interp_ssl"],
"_hashlib" : ["pypy.module._ssl.interp_ssl"],
"_minimal_curses": ["pypy.module._minimal_curses.fficurses"],
+ "_continuation": ["pypy.rlib.rstacklet"],
}
def get_module_validator(modname):
diff --git a/pypy/module/_continuation/test/__init__.py
b/pypy/module/_continuation/test/__init__.py
new file mode 100644
diff --git a/pypy/module/_continuation/test/support.py
b/pypy/module/_continuation/test/support.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/_continuation/test/support.py
@@ -0,0 +1,12 @@
+import py
+from pypy.conftest import gettestobjspace
+from pypy.rpython.tool.rffi_platform import CompilationError
+
+
+class BaseAppTest:
+ def setup_class(cls):
+ try:
+ import pypy.rlib.rstacklet
+ except CompilationError, e:
+ py.test.skip("cannot import rstacklet: %s" % e)
+ cls.space = gettestobjspace(usemodules=['_continuation'])
diff --git a/pypy/module/_continuation/test/test_generator.py
b/pypy/module/_continuation/test/test_generator.py
--- a/pypy/module/_continuation/test/test_generator.py
+++ b/pypy/module/_continuation/test/test_generator.py
@@ -1,9 +1,7 @@
-from pypy.conftest import gettestobjspace
+from pypy.module._continuation.test.support import BaseAppTest
-class AppTestGenerator:
- def setup_class(cls):
- cls.space = gettestobjspace(usemodules=['_continuation'])
+class AppTestGenerator(BaseAppTest):
def test_simple(self):
from _continuation import generator
diff --git a/pypy/module/_continuation/test/test_stacklet.py
b/pypy/module/_continuation/test/test_stacklet.py
--- a/pypy/module/_continuation/test/test_stacklet.py
+++ b/pypy/module/_continuation/test/test_stacklet.py
@@ -1,10 +1,10 @@
import os
-from pypy.conftest import gettestobjspace
+from pypy.module._continuation.test.support import BaseAppTest
-class AppTestStacklet:
+class AppTestStacklet(BaseAppTest):
def setup_class(cls):
- cls.space = gettestobjspace(usemodules=['_continuation'])
+ BaseAppTest.setup_class.im_func(cls)
cls.w_translated = cls.space.wrap(
os.path.join(os.path.dirname(__file__),
'test_translated.py'))
diff --git a/pypy/rlib/_rffi_stacklet.py b/pypy/rlib/_rffi_stacklet.py
--- a/pypy/rlib/_rffi_stacklet.py
+++ b/pypy/rlib/_rffi_stacklet.py
@@ -2,6 +2,7 @@
from pypy.tool.autopath import pypydir
from pypy.rpython.lltypesystem import lltype, llmemory, rffi
from pypy.translator.tool.cbuild import ExternalCompilationInfo
+from pypy.rpython.tool import rffi_platform
cdir = py.path.local(pypydir) / 'translator' / 'c'
@@ -12,6 +13,7 @@
includes = ['src/stacklet/stacklet.h'],
separate_module_sources = ['#include "src/stacklet/stacklet.c"\n'],
)
+rffi_platform.verify_eci(eci.convert_sources_to_files())
def llexternal(name, args, result, **kwds):
return rffi.llexternal(name, args, result, compilation_info=eci,
diff --git a/pypy/rlib/test/test_rstacklet.py b/pypy/rlib/test/test_rstacklet.py
--- a/pypy/rlib/test/test_rstacklet.py
+++ b/pypy/rlib/test/test_rstacklet.py
@@ -1,5 +1,12 @@
import gc
-from pypy.rlib import rstacklet, rrandom
+import py
+from pypy.rpython.tool.rffi_platform import CompilationError
+try:
+ from pypy.rlib import rstacklet
+except CompilationError, e:
+ py.test.skip("cannot import rstacklet: %s" % e)
+
+from pypy.rlib import rrandom
from pypy.rlib.rarithmetic import intmask
from pypy.rpython.lltypesystem import lltype, llmemory, rffi
from pypy.translator.c.test.test_standalone import StandaloneTests
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit