Author: Armin Rigo <[email protected]>
Branch: 
Changeset: r134:36bdfd223942
Date: 2014-12-01 11:39 +0100
http://bitbucket.org/cffi/creflect/changeset/36bdfd223942/

Log:    prepare the tests for more

diff --git a/zeffir/test/support.py b/zeffir/test/support.py
new file mode 100644
--- /dev/null
+++ b/zeffir/test/support.py
@@ -0,0 +1,34 @@
+import sys, os
+from udir import udir, include_dir
+
+zeffir_dir = os.path.join(os.path.dirname(__file__), '..')
+zeffir_lib_path = str(udir.join('zeffir.so'))
+
+
+def run(cmd):
+    print cmd
+    err = os.system(cmd)
+    if err:
+        raise OSError("%r\n==> error code %s" % (cmd, err))
+
+def compile_and_open(modname):
+    if not os.path.exists(zeffir_lib_path):
+        run("cd '%s' && "
+            "gcc -g -I'%s' -Wall -Werror -fPIC -shared zeffir.c -o '%s'" %
+            (zeffir_dir, include_dir, zeffir_lib_path))
+        assert os.path.exists(zeffir_lib_path)
+
+    sys.path.insert(0, str(udir))
+    import zeffir
+    del sys.path[0]
+
+    mod_c_path = str(udir.join('%s.c' % modname))
+    mod_lib_path = str(udir.join('lib%s.so' % modname))
+    if not os.path.exists(mod_lib_path):
+        run("cd '%s'/test && "
+            "PYTHONPATH=../.. ../../bin/creflect %s.crx '%s' && "
+            "gcc -g -I../../creflect -fPIC -shared '%s' -o '%s'" %
+            (zeffir_dir, modname, mod_c_path, mod_c_path, mod_lib_path))
+        assert os.path.exists(mod_lib_path)
+
+    return zeffir.open(modname, relative_to=zeffir_lib_path)
diff --git a/zeffir/test/test_basic.py b/zeffir/test/test_basic.py
--- a/zeffir/test/test_basic.py
+++ b/zeffir/test/test_basic.py
@@ -1,39 +1,19 @@
-import os, sys
-from udir import udir, include_dir
-
-def setup_module(mod):
-    global zeffir, zeffir_lib_path
-    zeffir_dir = os.path.join(os.path.dirname(__file__), '..')
-    zeffir_lib_path = str(udir.join('zeffir.so'))
-    err = os.system("cd '%s' && "
-            "gcc -g -I'%s' -Wall -Werror -fPIC -shared zeffir.c -o '%s'" %
-            (zeffir_dir, include_dir, zeffir_lib_path))
-    assert not err
-    #
-    sys.path.insert(0, str(udir))
-    import zeffir
-    #
-    basic_c_path = str(udir.join('basic.c'))
-    basic_lib_path = str(udir.join('libbasic.so'))
-    err = os.system("cd '%s'/test && "
-            "PYTHONPATH=../.. ../../bin/creflect basic.crx '%s' && "
-            "gcc -g -I../../creflect -fPIC -shared '%s' -o '%s'" %
-            (zeffir_dir, basic_c_path, basic_c_path, basic_lib_path))
-    assert not err
+import os
+import support
 
 
 def test_ffi_type():
-    ffi, lib = zeffir.open('basic', relative_to=zeffir_lib_path)
+    ffi, lib = support.compile_and_open('basic')
     assert type(ffi).__module__ == 'zeffir'
     assert type(ffi).__name__ == 'FFI'
     assert repr(ffi) == "<zeffir.FFI object for '%s/libbasic.so'>" % (
-        os.path.dirname(zeffir_lib_path),)
+        os.path.dirname(support.zeffir_lib_path),)
 
 def test_forty_two():
-    ffi, lib = zeffir.open('basic', relative_to=zeffir_lib_path)
+    ffi, lib = support.compile_and_open('basic')
     assert lib.forty_two == 42
     assert type(lib.forty_two) is int
 
 def test_dir():
-    ffi, lib = zeffir.open('basic', relative_to=zeffir_lib_path)
+    ffi, lib = support.compile_and_open('basic')
     assert dir(lib) == ['forty_two']
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to