[pypy-commit] cffi default: Write systematic tests for the 12 possible cases of installation.

arigo noreply at buildbot.pypy.org
Sat Sep 29 08:10:49 CEST 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r980:a9952be256f0
Date: 2012-09-29 08:10 +0200
http://bitbucket.org/cffi/cffi/changeset/a9952be256f0/

Log:	Write systematic tests for the 12 possible cases of installation.
	Minor clean-ups.

diff --git a/testing/snippets/basic_verify/setup.py b/testing/snippets/distutils_module/setup.py
rename from testing/snippets/basic_verify/setup.py
rename to testing/snippets/distutils_module/setup.py
--- a/testing/snippets/basic_verify/setup.py
+++ b/testing/snippets/distutils_module/setup.py
@@ -3,5 +3,5 @@
 import snip_basic_verify
 
 setup(
-    packages=['snip_basic_verify'],
+    py_modules=['snip_basic_verify'],
     ext_modules=[snip_basic_verify.ffi.verifier.get_extension()])
diff --git a/testing/snippets/basic_verify/snip_basic_verify/__init__.py b/testing/snippets/distutils_module/snip_basic_verify.py
rename from testing/snippets/basic_verify/snip_basic_verify/__init__.py
rename to testing/snippets/distutils_module/snip_basic_verify.py
--- a/testing/snippets/basic_verify/snip_basic_verify/__init__.py
+++ b/testing/snippets/distutils_module/snip_basic_verify.py
@@ -1,5 +1,6 @@
 
 from cffi import FFI
+import sys
 
 ffi = FFI()
 ffi.cdef("""     // some declarations from the man page
@@ -12,4 +13,5 @@
 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
+""", libraries=[],    # or a list of libraries to link with
+     force_generic_engine=hasattr(sys, '_force_generic_engine_'))
diff --git a/testing/snippets/basic_verify/setup.py b/testing/snippets/distutils_package_1/setup.py
copy from testing/snippets/basic_verify/setup.py
copy to testing/snippets/distutils_package_1/setup.py
--- a/testing/snippets/basic_verify/setup.py
+++ b/testing/snippets/distutils_package_1/setup.py
@@ -1,7 +1,7 @@
 
 from distutils.core import setup
-import snip_basic_verify
+import snip_basic_verify1
 
 setup(
-    packages=['snip_basic_verify'],
-    ext_modules=[snip_basic_verify.ffi.verifier.get_extension()])
+    packages=['snip_basic_verify1'],
+    ext_modules=[snip_basic_verify1.ffi.verifier.get_extension()])
diff --git a/testing/snippets/basic_verify/snip_basic_verify/__init__.py b/testing/snippets/distutils_package_1/snip_basic_verify1/__init__.py
copy from testing/snippets/basic_verify/snip_basic_verify/__init__.py
copy to testing/snippets/distutils_package_1/snip_basic_verify1/__init__.py
--- a/testing/snippets/basic_verify/snip_basic_verify/__init__.py
+++ b/testing/snippets/distutils_package_1/snip_basic_verify1/__init__.py
@@ -1,5 +1,6 @@
 
 from cffi import FFI
+import sys
 
 ffi = FFI()
 ffi.cdef("""     // some declarations from the man page
@@ -12,4 +13,5 @@
 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
+""", libraries=[],    # or a list of libraries to link with
+     force_generic_engine=hasattr(sys, '_force_generic_engine_'))
diff --git a/testing/snippets/basic_verify/setup.py b/testing/snippets/distutils_package_2/setup.py
copy from testing/snippets/basic_verify/setup.py
copy to testing/snippets/distutils_package_2/setup.py
--- a/testing/snippets/basic_verify/setup.py
+++ b/testing/snippets/distutils_package_2/setup.py
@@ -1,7 +1,8 @@
 
 from distutils.core import setup
-import snip_basic_verify
+import snip_basic_verify2
 
 setup(
-    packages=['snip_basic_verify'],
-    ext_modules=[snip_basic_verify.ffi.verifier.get_extension()])
+    packages=['snip_basic_verify2'],
+    ext_package='snip_basic_verify2',
+    ext_modules=[snip_basic_verify2.ffi.verifier.get_extension()])
diff --git a/testing/snippets/basic_verify/snip_basic_verify/__init__.py b/testing/snippets/distutils_package_2/snip_basic_verify2/__init__.py
copy from testing/snippets/basic_verify/snip_basic_verify/__init__.py
copy to testing/snippets/distutils_package_2/snip_basic_verify2/__init__.py
--- a/testing/snippets/basic_verify/snip_basic_verify/__init__.py
+++ b/testing/snippets/distutils_package_2/snip_basic_verify2/__init__.py
@@ -1,5 +1,6 @@
 
 from cffi import FFI
+import sys
 
 ffi = FFI()
 ffi.cdef("""     // some declarations from the man page
@@ -12,4 +13,6 @@
 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
+""", libraries=[],    # or a list of libraries to link with
+     ext_package='snip_basic_verify2',
+     force_generic_engine=hasattr(sys, '_force_generic_engine_'))
diff --git a/testing/snippets/package/setup.py b/testing/snippets/package/setup.py
deleted file mode 100644
--- a/testing/snippets/package/setup.py
+++ /dev/null
@@ -1,7 +0,0 @@
-
-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
deleted file mode 100644
--- a/testing/snippets/package/snip_package/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-
-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_verify/setup.py b/testing/snippets/setuptools_module/setup.py
rename from testing/snippets/setuptools_verify/setup.py
rename to testing/snippets/setuptools_module/setup.py
--- a/testing/snippets/setuptools_verify/setup.py
+++ b/testing/snippets/setuptools_module/setup.py
@@ -4,5 +4,5 @@
 
 setup(
     zip_safe=False,
-    packages=['snip_setuptools_verify'],
+    py_modules=['snip_setuptools_verify'],
     ext_modules=[snip_setuptools_verify.ffi.verifier.get_extension()])
diff --git a/testing/snippets/basic_verify/snip_basic_verify/__init__.py b/testing/snippets/setuptools_module/snip_setuptools_verify.py
copy from testing/snippets/basic_verify/snip_basic_verify/__init__.py
copy to testing/snippets/setuptools_module/snip_setuptools_verify.py
--- a/testing/snippets/basic_verify/snip_basic_verify/__init__.py
+++ b/testing/snippets/setuptools_module/snip_setuptools_verify.py
@@ -1,5 +1,6 @@
 
 from cffi import FFI
+import sys
 
 ffi = FFI()
 ffi.cdef("""     // some declarations from the man page
@@ -12,4 +13,5 @@
 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
+""", libraries=[],    # or a list of libraries to link with
+     force_generic_engine=hasattr(sys, '_force_generic_engine_'))
diff --git a/testing/snippets/setuptools_package/setup.py b/testing/snippets/setuptools_package/setup.py
deleted file mode 100644
--- a/testing/snippets/setuptools_package/setup.py
+++ /dev/null
@@ -1,8 +0,0 @@
-
-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
deleted file mode 100644
--- a/testing/snippets/setuptools_package/snip_setuptools_verify/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-
-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/snippets/setuptools_verify/setup.py b/testing/snippets/setuptools_package_1/setup.py
copy from testing/snippets/setuptools_verify/setup.py
copy to testing/snippets/setuptools_package_1/setup.py
--- a/testing/snippets/setuptools_verify/setup.py
+++ b/testing/snippets/setuptools_package_1/setup.py
@@ -1,8 +1,8 @@
 
 from setuptools import setup
-import snip_setuptools_verify
+import snip_setuptools_verify1
 
 setup(
     zip_safe=False,
-    packages=['snip_setuptools_verify'],
-    ext_modules=[snip_setuptools_verify.ffi.verifier.get_extension()])
+    packages=['snip_setuptools_verify1'],
+    ext_modules=[snip_setuptools_verify1.ffi.verifier.get_extension()])
diff --git a/testing/snippets/basic_verify/snip_basic_verify/__init__.py b/testing/snippets/setuptools_package_1/snip_setuptools_verify1/__init__.py
copy from testing/snippets/basic_verify/snip_basic_verify/__init__.py
copy to testing/snippets/setuptools_package_1/snip_setuptools_verify1/__init__.py
--- a/testing/snippets/basic_verify/snip_basic_verify/__init__.py
+++ b/testing/snippets/setuptools_package_1/snip_setuptools_verify1/__init__.py
@@ -1,5 +1,6 @@
 
 from cffi import FFI
+import sys
 
 ffi = FFI()
 ffi.cdef("""     // some declarations from the man page
@@ -12,4 +13,5 @@
 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
+""", libraries=[],    # or a list of libraries to link with
+     force_generic_engine=hasattr(sys, '_force_generic_engine_'))
diff --git a/testing/snippets/setuptools_verify/setup.py b/testing/snippets/setuptools_package_2/setup.py
copy from testing/snippets/setuptools_verify/setup.py
copy to testing/snippets/setuptools_package_2/setup.py
--- a/testing/snippets/setuptools_verify/setup.py
+++ b/testing/snippets/setuptools_package_2/setup.py
@@ -1,8 +1,9 @@
 
 from setuptools import setup
-import snip_setuptools_verify
+import snip_setuptools_verify2
 
 setup(
     zip_safe=False,
-    packages=['snip_setuptools_verify'],
-    ext_modules=[snip_setuptools_verify.ffi.verifier.get_extension()])
+    packages=['snip_setuptools_verify2'],
+    ext_package='snip_setuptools_verify2',
+    ext_modules=[snip_setuptools_verify2.ffi.verifier.get_extension()])
diff --git a/testing/snippets/basic_verify/snip_basic_verify/__init__.py b/testing/snippets/setuptools_package_2/snip_setuptools_verify2/__init__.py
copy from testing/snippets/basic_verify/snip_basic_verify/__init__.py
copy to testing/snippets/setuptools_package_2/snip_setuptools_verify2/__init__.py
--- a/testing/snippets/basic_verify/snip_basic_verify/__init__.py
+++ b/testing/snippets/setuptools_package_2/snip_setuptools_verify2/__init__.py
@@ -1,5 +1,6 @@
 
 from cffi import FFI
+import sys
 
 ffi = FFI()
 ffi.cdef("""     // some declarations from the man page
@@ -12,4 +13,6 @@
 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
+""", libraries=[],    # or a list of libraries to link with
+     ext_package='snip_setuptools_verify2',
+     force_generic_engine=hasattr(sys, '_force_generic_engine_'))
diff --git a/testing/snippets/setuptools_verify/snip_setuptools_verify/__init__.py b/testing/snippets/setuptools_verify/snip_setuptools_verify/__init__.py
deleted file mode 100644
--- a/testing/snippets/setuptools_verify/snip_setuptools_verify/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-
-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_zintegration.py
rename from testing/test_integration.py
rename to testing/test_zintegration.py
--- a/testing/test_integration.py
+++ b/testing/test_zintegration.py
@@ -1,14 +1,7 @@
-
-import py, os, sys
+import py, os, sys, shutil
 import subprocess
 from testing.udir import udir
 
-class DummyLogger(object):
-    indent = 0
-    
-    def __getattr__(self, attr):
-        return lambda *args: None
-
 def create_venv(name):
     tmpdir = udir.join(name)
     subprocess.call(['virtualenv', '-p', sys.executable, str(tmpdir)])
@@ -16,51 +9,82 @@
 
 SNIPPET_DIR = py.path.local(__file__).join('..', 'snippets')
 
-def run_setup_and_program(dirname, venv_dir, python_snippet):
+def really_run_setup_and_program(dirname, venv_dir, python_snippet):
+    shutil.rmtree(str(SNIPPET_DIR.join(dirname, 'build')),
+                  ignore_errors=True)
+    shutil.rmtree(str(SNIPPET_DIR.join(dirname, '__pycache__')),
+                  ignore_errors=True)
     olddir = os.getcwd()
     python_f = udir.join('x.py')
     python_f.write(py.code.Source(python_snippet))
     try:
         os.chdir(str(SNIPPET_DIR.join(dirname)))
         venv = venv_dir.join('bin/activate')
-        p = subprocess.Popen(['bash', '-c', '. %(venv)s && python setup.py '
-                              'install && python %(python_f)s' % locals()],
-                             stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-        stdout, stderr = p.communicate()
+        p = subprocess.Popen(['bash', '-c', '. %(venv)s && '
+                              'python setup.py clean && '
+                              'python setup.py install && '
+                              'python %(python_f)s' % locals()])
+        p.communicate()
         if p.returncode != 0:
-            print stdout
-            print stderr
             raise Exception("crashed")
     finally:
         os.chdir(olddir)
 
+def run_setup_and_program(dirname, python_snippet):
+    venv_dir = create_venv(dirname + '-cpy')
+    really_run_setup_and_program(dirname, venv_dir, python_snippet)
+    #
+    sys._force_generic_engine_ = True
+    try:
+        venv_dir = create_venv(dirname + '-gen')
+        really_run_setup_and_program(dirname, venv_dir, python_snippet)
+    finally:
+        del sys._force_generic_engine_
+
 def test_infrastructure():
-    venv_dir = create_venv('infrastructure')
-    run_setup_and_program('infrastructure', venv_dir, '''
+    run_setup_and_program('infrastructure', '''
     import snip_infrastructure
     assert snip_infrastructure.func() == 42
     ''')
 
-def test_basic_verify():
-    venv_dir = create_venv('basic_verify')
-    run_setup_and_program("basic_verify", venv_dir, '''
+def test_distutils_module():
+    run_setup_and_program("distutils_module", '''
     import snip_basic_verify
     p = snip_basic_verify.C.getpwuid(0)
     assert snip_basic_verify.ffi.string(p.pw_name) == "root"
     ''')
 
-def test_setuptools_verify():
-    venv_dir = create_venv('setuptools_verify')
-    run_setup_and_program("setuptools_verify", venv_dir, '''
+def test_distutils_package_1():
+    run_setup_and_program("distutils_package_1", '''
+    import snip_basic_verify1
+    p = snip_basic_verify1.C.getpwuid(0)
+    assert snip_basic_verify1.ffi.string(p.pw_name) == "root"
+    ''')
+
+def test_distutils_package_2():
+    run_setup_and_program("distutils_package_2", '''
+    import snip_basic_verify2
+    p = snip_basic_verify2.C.getpwuid(0)
+    assert snip_basic_verify2.ffi.string(p.pw_name) == "root"
+    ''')
+
+def test_setuptools_module():
+    run_setup_and_program("setuptools_module", '''
     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"
+
+def test_setuptools_package_1():
+    run_setup_and_program("setuptools_package_1", '''
+    import snip_setuptools_verify1
+    p = snip_setuptools_verify1.C.getpwuid(0)
+    assert snip_setuptools_verify1.ffi.string(p.pw_name) == "root"
     ''')
+
+def test_setuptools_package_2():
+    run_setup_and_program("setuptools_package_2", '''
+    import snip_setuptools_verify2
+    p = snip_setuptools_verify2.C.getpwuid(0)
+    assert snip_setuptools_verify2.ffi.string(p.pw_name) == "root"
+    ''')


More information about the pypy-commit mailing list