[pypy-commit] cffi default: use udir and check in more cases

fijal noreply at buildbot.pypy.org
Tue Sep 25 12:46:01 CEST 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: 
Changeset: r972:4a8e419cb16d
Date: 2012-09-25 10:28 +0200
http://bitbucket.org/cffi/cffi/changeset/4a8e419cb16d/

Log:	use udir and check in more cases

diff --git a/testing/snippets/package/setup.py b/testing/snippets/package/setup.py
new file mode 100644
--- /dev/null
+++ b/testing/snippets/package/setup.py
@@ -0,0 +1,7 @@
+
+from distutils.core import setup
+import snip_package
+
+setup(
+    ext_package=['ext_package'],
+    ext_modules=[snip_package.ffi.verifier.get_extension()])
diff --git a/testing/snippets/package/snip_package/__init__.py b/testing/snippets/package/snip_package/__init__.py
new file mode 100644
--- /dev/null
+++ b/testing/snippets/package/snip_package/__init__.py
@@ -0,0 +1,15 @@
+
+from cffi import FFI
+
+ffi = FFI()
+ffi.cdef("""     // some declarations from the man page
+    struct passwd {
+        char *pw_name;
+        ...;
+    };
+    struct passwd *getpwuid(int uid);
+""")
+C = ffi.verify("""   // passed to the real C compiler
+#include <sys/types.h>
+#include <pwd.h>
+""", libraries=[], ext_package="ext_package")
diff --git a/testing/snippets/setuptools_package/setup.py b/testing/snippets/setuptools_package/setup.py
new file mode 100644
--- /dev/null
+++ b/testing/snippets/setuptools_package/setup.py
@@ -0,0 +1,8 @@
+
+from setuptools import setup
+import snip_setuptools_verify
+
+setup(
+    zip_safe=False,
+    packages=['snip_setuptools_verify'],
+    ext_modules=[snip_setuptools_verify.ffi.verifier.get_extension()])
diff --git a/testing/snippets/setuptools_package/snip_setuptools_verify/__init__.py b/testing/snippets/setuptools_package/snip_setuptools_verify/__init__.py
new file mode 100644
--- /dev/null
+++ b/testing/snippets/setuptools_package/snip_setuptools_verify/__init__.py
@@ -0,0 +1,15 @@
+
+from cffi import FFI
+
+ffi = FFI()
+ffi.cdef("""     // some declarations from the man page
+    struct passwd {
+        char *pw_name;
+        ...;
+    };
+    struct passwd *getpwuid(int uid);
+""")
+C = ffi.verify("""   // passed to the real C compiler
+#include <sys/types.h>
+#include <pwd.h>
+""", libraries=[])   # or a list of libraries to link with
diff --git a/testing/test_integration.py b/testing/test_integration.py
--- a/testing/test_integration.py
+++ b/testing/test_integration.py
@@ -1,7 +1,7 @@
 
 import py, os, sys
-import tempfile
 import subprocess
+from testing.udir import udir
 
 class DummyLogger(object):
     indent = 0
@@ -9,17 +9,16 @@
     def __getattr__(self, attr):
         return lambda *args: None
 
-def create_venv():
-    tmpdir = tempfile.mkdtemp()
-    subprocess.call(['virtualenv', '-p', sys.executable, tmpdir])
-    return py.path.local(tmpdir)
+def create_venv(name):
+    tmpdir = udir.join(name)
+    subprocess.call(['virtualenv', '-p', sys.executable, str(tmpdir)])
+    return tmpdir
 
 SNIPPET_DIR = py.path.local(__file__).join('..', 'snippets')
 
 def run_setup_and_program(dirname, venv_dir, python_snippet):
     olddir = os.getcwd()
-    tmpdir2 = py.path.local(tempfile.mkdtemp()) # this is for python files
-    python_f = tmpdir2.join('x.py')
+    python_f = udir.join('x.py')
     python_f.write(py.code.Source(python_snippet))
     try:
         os.chdir(str(SNIPPET_DIR.join(dirname)))
@@ -36,14 +35,14 @@
         os.chdir(olddir)
 
 def test_infrastructure():
-    venv_dir = create_venv()
+    venv_dir = create_venv('infrastructure')
     run_setup_and_program('infrastructure', venv_dir, '''
     import snip_infrastructure
     assert snip_infrastructure.func() == 42
     ''')
 
 def test_basic_verify():
-    venv_dir = create_venv()
+    venv_dir = create_venv('basic_verify')
     run_setup_and_program("basic_verify", venv_dir, '''
     import snip_basic_verify
     p = snip_basic_verify.C.getpwuid(0)
@@ -51,10 +50,17 @@
     ''')
 
 def test_setuptools_verify():
-    venv_dir = create_venv()
+    venv_dir = create_venv('setuptools_verify')
     run_setup_and_program("setuptools_verify", venv_dir, '''
     import snip_setuptools_verify
     p = snip_setuptools_verify.C.getpwuid(0)
     assert snip_setuptools_verify.ffi.string(p.pw_name) == "root"
     ''')
     
+def test_package():
+    venv_dir = create_venv('package')
+    run_setup_and_program("package", venv_dir, '''
+    import snip_package
+    p = snip_package.C.getpwuid(0)
+    assert snip_package.ffi.string(p.pw_name) == "root"
+    ''')


More information about the pypy-commit mailing list