[pypy-commit] pypy cffi-1.0: test_include_1
arigo
noreply at buildbot.pypy.org
Sun May 17 21:27:24 CEST 2015
Author: Armin Rigo <arigo at tunes.org>
Branch: cffi-1.0
Changeset: r77367:831e0d15fc57
Date: 2015-05-17 21:27 +0200
http://bitbucket.org/pypy/pypy/changeset/831e0d15fc57/
Log: test_include_1
diff --git a/pypy/module/_cffi_backend/cdlopen.py b/pypy/module/_cffi_backend/cdlopen.py
--- a/pypy/module/_cffi_backend/cdlopen.py
+++ b/pypy/module/_cffi_backend/cdlopen.py
@@ -230,4 +230,9 @@
ffi.ctxobj.ctx.c_typenames = ntypenames
rffi.setintfield(ffi.ctxobj.ctx, 'c_num_typenames', n)
- # ... XXXX
+ if w_includes:
+ from pypy.module._cffi_backend.ffi_obj import W_FFIObject
+ #
+ for w_parent_ffi in space.fixedview(w_includes):
+ parent_ffi = space.interp_w(W_FFIObject, w_parent_ffi)
+ ffi.included_ffis_libs.append((parent_ffi, None))
diff --git a/pypy/module/_cffi_backend/ffi_obj.py b/pypy/module/_cffi_backend/ffi_obj.py
--- a/pypy/module/_cffi_backend/ffi_obj.py
+++ b/pypy/module/_cffi_backend/ffi_obj.py
@@ -78,7 +78,7 @@
"object", name)
for ffi1, _ in self.included_ffis_libs:
- w_result = ffi1.ffi_fetch_int_constant(name)
+ w_result = ffi1.fetch_int_constant(name)
if w_result is not None:
return w_result
return None
diff --git a/pypy/module/_cffi_backend/test/test_re_python.py b/pypy/module/_cffi_backend/test/test_re_python.py
--- a/pypy/module/_cffi_backend/test/test_re_python.py
+++ b/pypy/module/_cffi_backend/test/test_re_python.py
@@ -53,7 +53,14 @@
""")
ffi.set_source('re_python_pysrc', None)
ffi.emit_python_code(str(tmpdir.join('re_python_pysrc.py')))
- #mod.original_ffi = ffi
+ #
+ sub_ffi = FFI()
+ sub_ffi.cdef("static const int k2 = 121212;")
+ sub_ffi.include(ffi)
+ assert 'macro FOOBAR' in ffi._parser._declarations
+ assert 'macro FOOBAZ' in ffi._parser._declarations
+ sub_ffi.set_source('re_py_subsrc', None)
+ sub_ffi.emit_python_code(str(tmpdir.join('re_py_subsrc.py')))
#
space.appexec([space.wrap(str(tmpdir))], """(path):
import _cffi_backend # force it to be initialized
@@ -64,10 +71,9 @@
def teardown_method(self, meth):
self.space.appexec([], """():
import sys
- try:
- del sys.modules['re_python_pysrc']
- except KeyError:
- pass
+ for name in ['re_py_subsrc', 're_python_pysrc']:
+ if name in sys.modules:
+ del sys.modules[name]
""")
_clean_cache(self.space)
@@ -124,15 +130,7 @@
assert ffi.string(e) == "CC"
def test_include_1(self):
- sub_ffi = FFI()
- sub_ffi.cdef("static const int k2 = 121212;")
- sub_ffi.include(original_ffi)
- assert 'macro FOOBAR' in original_ffi._parser._declarations
- assert 'macro FOOBAZ' in original_ffi._parser._declarations
- sub_ffi.set_source('re_python_pysrc', None)
- sub_ffi.emit_python_code(str(tmpdir.join('_re_include_1.py')))
- #
- from _re_include_1 import ffi
+ from re_py_subsrc import ffi
assert ffi.integer_const('FOOBAR') == -42
assert ffi.integer_const('FOOBAZ') == -43
assert ffi.integer_const('k2') == 121212
More information about the pypy-commit
mailing list