[pypy-commit] pypy cffi-1.0: fix test_module_name_in_package

arigo noreply at buildbot.pypy.org
Fri May 8 16:56:08 CEST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: cffi-1.0
Changeset: r77215:f8008542fa0b
Date: 2015-05-08 16:54 +0200
http://bitbucket.org/pypy/pypy/changeset/f8008542fa0b/

Log:	fix test_module_name_in_package

diff --git a/pypy/module/_cffi_backend/test/test_recompiler.py b/pypy/module/_cffi_backend/test/test_recompiler.py
--- a/pypy/module/_cffi_backend/test/test_recompiler.py
+++ b/pypy/module/_cffi_backend/test/test_recompiler.py
@@ -23,14 +23,20 @@
         '#define PYPY_VERSION XX\n'
         '#define PyMODINIT_FUNC /*exported*/\n'
         )
-    c_file  = str(rdir.join('%s.c'  % module_name))
-    so_file = str(rdir.join('%s.so' % module_name))
+    path = module_name.replace('.', os.sep)
+    if '.' in module_name:
+        subrdir = rdir.join(module_name[:module_name.index('.')])
+        os.mkdir(str(subrdir))
+    else:
+        subrdir = rdir
+    c_file  = str(rdir.join('%s.c'  % path))
+    so_file = str(rdir.join('%s.so' % path))
     ffi = FFI()
     ffi.cdef(cdef)
     ffi.set_source(module_name, source)
     ffi.emit_c_code(c_file)
-    err = os.system("cd '%s' && gcc -shared -fPIC -g -I. '%s' -o '%s'" % (
-        str(rdir),
+    err = os.system("cd '%s' && gcc -shared -fPIC -g -I'%s' '%s' -o '%s'" % (
+        str(subrdir), str(rdir),
         os.path.basename(c_file),
         os.path.basename(so_file)))
     if err != 0:
@@ -394,10 +400,11 @@
         assert ffi.sizeof("e1") == ffi.sizeof("int")
         assert repr(ffi.cast("e1", 2)) == "<cdata 'e1' 2: AA>"
         #
-        ffi = FFI()
-        ffi.cdef("typedef enum { AA=%d } e1;" % sys.maxsize)
-        lib = verify(ffi, 'test_verify_anonymous_enum_with_typedef2',
-                     "typedef enum { AA=%d } e1;" % sys.maxsize)
+        import sys
+        ffi, lib = self.prepare(
+            "typedef enum { AA=%d } e1;" % sys.maxsize,
+            'test_verify_anonymous_enum_with_typedef2',
+            "typedef enum { AA=%d } e1;" % sys.maxsize)
         assert lib.AA == sys.maxsize
         assert ffi.sizeof("e1") == ffi.sizeof("long")
 
@@ -427,24 +434,12 @@
         # sanity check: twice 'ffi1'
         assert ffi1.typeof("struct foo_s*") is ffi1.typeof("struct foo_s *")
 
-    def test_module_name_in_package():
-        ffi = FFI()
-        ffi.cdef("int foo(int);")
-        recompiler.recompile(ffi, "test_module_name_in_package.mymod",
-                             "int foo(int x) { return x + 32; }",
-                             tmpdir=str(udir))
-        old_sys_path = sys.path[:]
-        try:
-            package_dir = udir.join('test_module_name_in_package')
-            assert os.path.isdir(str(package_dir))
-            assert len(os.listdir(str(package_dir))) > 0
-            package_dir.join('__init__.py').write('')
-            #
-            sys.path.insert(0, str(udir))
-            import test_module_name_in_package.mymod
-            assert test_module_name_in_package.mymod.lib.foo(10) == 42
-        finally:
-            sys.path[:] = old_sys_path
+    def test_module_name_in_package(self):
+        ffi, lib = self.prepare(
+            "int foo(int);",
+            'test_module_name_in_package.mymod',
+            "int foo(int x) { return x + 32; }")
+        assert lib.foo(10) == 42
 
     def test_bad_size_of_global_1():
         ffi = FFI()


More information about the pypy-commit mailing list