Author: Armin Rigo <ar...@tunes.org> 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 pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit