author | Danek Duvall <danek.duvall@oracle.com> |
Tue, 22 Apr 2014 11:18:42 -0700 | |
changeset 1846 | df40919e04fa |
child 4894 | 7219201c1b0d |
child 7085 | cad8ee01213d |
permissions | -rw-r--r-- |
1846
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
1 |
The testsuite makes some incorrect assumptions: |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
2 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
3 |
- we need to not assume "a standard gcc", so replace the -Werror flag |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
4 |
with -errwarn to turn on the warnings are expected to cause compilation |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
5 |
to fail. |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
6 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
7 |
- don't use the -pthread flag for compilation; as Studio doesn't have any |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
8 |
clue what to do with it, and we don't need it on Solaris, anyway. |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
9 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
10 |
- don't force the use of gcc when compiling a test shared object; get |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
11 |
that passed in from the makefile. |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
12 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
13 |
- don't assume that stdin/stdout/stderr are changeable: |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
14 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
15 |
https://bitbucket.org/cffi/cffi/issue/145/solaris-stdout-and-stderr-not-in-libc-not |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
16 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
17 |
fixed in |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
18 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
19 |
https://bitbucket.org/cffi/cffi/commits/237031079adc |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
20 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
21 |
- don't assume that enums can be unsigned or are the same size as long: |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
22 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
23 |
https://bitbucket.org/cffi/cffi/issue/143/test_enum_size-makes-invalid-assumptions |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
24 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
25 |
Also fix a problem with some assignments to void*: |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
26 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
27 |
https://bitbucket.org/cffi/cffi/issue/146/incorrect-type-for-c_callback-variable |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
28 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
29 |
fixed in |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
30 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
31 |
https://bitbucket.org/cffi/cffi/commits/51d87933eb4b |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
32 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
33 |
--- cffi-0.8.2/testing/test_verify.py Thu Mar 6 22:51:56 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
34 |
+++ cffi-0.8.2/testing/test_verify.py Thu Mar 20 18:39:01 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
35 |
@@ -18,8 +18,10 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
36 |
extra_compile_args = [ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
37 |
'-Werror', '-Qunused-arguments', '-Wno-error=shorten-64-to-32'] |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
38 |
else: |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
39 |
- # assume a standard gcc |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
40 |
- extra_compile_args = ['-Werror'] |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
41 |
+ extra_compile_args = [ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
42 |
+ '-errtags=yes', |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
43 |
+ '-errwarn=E_ASSIGNMENT_TYPE_MISMATCH,E_RETURN_VALUE_TYPE_MISMATCH' |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
44 |
+ ] |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
45 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
46 |
class FFI(FFI): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
47 |
def verify(self, *args, **kwds): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
48 |
--- cffi-0.8.2/testing/callback_in_thread.py Fri Mar 21 15:58:21 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
49 |
+++ cffi-0.8.2/testing/callback_in_thread.py Fri Mar 21 15:58:30 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
50 |
@@ -22,7 +22,7 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
51 |
pthread_create(&thread, NULL, my_wait_function, (void*)mycb); |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
52 |
return 0; |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
53 |
} |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
54 |
- """, extra_compile_args=['-pthread']) |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
55 |
+ """) |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
56 |
seen = [] |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
57 |
@ffi.callback('int(*)(int,int)') |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
58 |
def mycallback(x, y): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
59 |
--- cffi-0.8.2/testing/test_ownlib.py Tue Oct 9 02:10:04 2012 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
60 |
+++ cffi-0.8.2/testing/test_ownlib.py Tue Mar 25 15:39:35 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
61 |
@@ -1,4 +1,4 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
62 |
-import py, sys |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
63 |
+import os, py, sys |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
64 |
import subprocess, weakref |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
65 |
from cffi import FFI |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
66 |
from cffi.backend_ctypes import CTypesBackend |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
67 |
@@ -28,7 +28,7 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
68 |
from testing.udir import udir |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
69 |
udir.join('testownlib.c').write(SOURCE) |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
70 |
subprocess.check_call( |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
71 |
- 'gcc testownlib.c -shared -fPIC -o testownlib.so', |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
72 |
+ os.getenv('TESTOWNLIB_CC') % ('testownlib.c', 'testownlib.so'), |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
73 |
cwd=str(udir), shell=True) |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
74 |
cls.module = str(udir.join('testownlib.so')) |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
75 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
76 |
--- cffi-0.8.2/c/test_c.py Thu Mar 6 22:51:56 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
77 |
+++ cffi-0.8.2/c/test_c.py Mon Mar 24 14:53:27 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
78 |
@@ -1102,7 +1102,7 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
79 |
def test_read_variable(): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
80 |
## FIXME: this test assumes glibc specific behavior, it's not compliant with C standard |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
81 |
## https://bugs.pypy.org/issue1643 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
82 |
- if sys.platform == 'win32' or sys.platform == 'darwin' or sys.platform.startswith('freebsd'): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
83 |
+ if not sys.platform.startswith("linux"): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
84 |
py.test.skip("untested") |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
85 |
BVoidP = new_pointer_type(new_void_type()) |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
86 |
ll = find_and_load_library('c') |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
87 |
@@ -1112,7 +1112,7 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
88 |
def test_read_variable_as_unknown_length_array(): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
89 |
## FIXME: this test assumes glibc specific behavior, it's not compliant with C standard |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
90 |
## https://bugs.pypy.org/issue1643 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
91 |
- if sys.platform == 'win32' or sys.platform == 'darwin' or sys.platform.startswith('freebsd'): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
92 |
+ if not sys.platform.startswith("linux"): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
93 |
py.test.skip("untested") |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
94 |
BCharP = new_pointer_type(new_primitive_type("char")) |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
95 |
BArray = new_array_type(BCharP, None) |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
96 |
@@ -1124,7 +1124,7 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
97 |
def test_write_variable(): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
98 |
## FIXME: this test assumes glibc specific behavior, it's not compliant with C standard |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
99 |
## https://bugs.pypy.org/issue1643 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
100 |
- if sys.platform == 'win32' or sys.platform == 'darwin' or sys.platform.startswith('freebsd'): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
101 |
+ if not sys.platform.startswith("linux"): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
102 |
py.test.skip("untested") |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
103 |
BVoidP = new_pointer_type(new_void_type()) |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
104 |
ll = find_and_load_library('c') |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
105 |
--- cffi-0.8.2/testing/test_verify.py Thu Mar 6 22:51:56 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
106 |
+++ cffi-0.8.2/testing/test_verify.py Mon Mar 24 15:03:49 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
107 |
@@ -1472,8 +1474,8 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
108 |
assert func() == 42 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
109 |
|
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
110 |
def test_FILE_stored_in_stdout(): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
111 |
- if sys.platform == 'win32': |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
112 |
- py.test.skip("MSVC: cannot assign to stdout") |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
113 |
+ if not sys.platform.startswith("linux"): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
114 |
+ py.test.skip("likely, we cannot assign to stdout") |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
115 |
ffi = FFI() |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
116 |
ffi.cdef("int printf(const char *, ...); FILE *setstdout(FILE *);") |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
117 |
lib = ffi.verify(""" |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
118 |
--- cffi-0.8.2/testing/test_verify.py Thu Mar 6 22:51:56 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
119 |
+++ cffi-0.8.2/testing/test_verify.py Mon Mar 24 15:06:23 2014 |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
120 |
@@ -1598,13 +1598,13 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
121 |
('-123', 4, -1), |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
122 |
('-2147483647-1', 4, -1), |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
123 |
] |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
124 |
- if FFI().sizeof("long") == 8: |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
125 |
+ if FFI().sizeof("long") == 8 and sys.platform != 'sunos5': |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
126 |
cases += [('4294967296L', 8, 2**64-1), |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
127 |
('%dUL' % (2**64-1), 8, 2**64-1), |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
128 |
('-2147483649L', 8, -1), |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
129 |
('%dL-1L' % (1-2**63), 8, -1)] |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
130 |
for hidden_value, expected_size, expected_minus1 in cases: |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
131 |
- if sys.platform == 'win32' and 'U' in hidden_value: |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
132 |
+ if sys.platform in ('win32', 'sunos5') and 'U' in hidden_value: |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
133 |
continue # skipped on Windows |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
134 |
ffi = FFI() |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
135 |
ffi.cdef("enum foo_e { AA, BB, ... };") |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
136 |
@@ -1629,7 +1627,7 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
137 |
(maxulong, -1, ''), |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
138 |
(-1, 0xffffffff, 'U'), |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
139 |
(-1, maxulong, 'UL')]: |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
140 |
- if c2c and sys.platform == 'win32': |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
141 |
+ if c2c and sys.platform in ('win32', 'sunos5'): |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
142 |
continue # enums may always be signed with MSVC |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
143 |
ffi = FFI() |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
144 |
ffi.cdef("enum foo_e { AA=%s };" % c1) |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
145 |
--- a/testing/test_verify.py |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
146 |
+++ b/testing/test_verify.py |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
147 |
@@ -1656,8 +1656,8 @@ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
148 |
ffi = FFI() |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
149 |
ffi.cdef(""" |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
150 |
int (*python_callback)(int how_many, int *values); |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
151 |
- void *const c_callback; /* pass this ptr to C routines */ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
152 |
- int some_c_function(void *cb); |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
153 |
+ int (*const c_callback)(int,...); /* pass this ptr to C routines */ |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
154 |
+ int some_c_function(int(*cb)(int,...)); |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
155 |
""") |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
156 |
lib = ffi.verify(""" |
df40919e04fa
PSARC/2014/110 CFFI: foreign function interface for Python calling C code
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
157 |
#include <stdarg.h> |