[pypy-commit] cffi default: Add test from the recent ctypes fix bpo-29565 (may fail on win64)
arigo
pypy.commits at gmail.com
Sun Aug 5 03:42:48 EDT 2018
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r3133:7b305f61d0e0
Date: 2018-08-05 09:42 +0200
http://bitbucket.org/cffi/cffi/changeset/7b305f61d0e0/
Log: Add test from the recent ctypes fix bpo-29565 (may fail on win64)
diff --git a/testing/cffi0/backend_tests.py b/testing/cffi0/backend_tests.py
--- a/testing/cffi0/backend_tests.py
+++ b/testing/cffi0/backend_tests.py
@@ -1945,3 +1945,30 @@
# only works with the Python FFI instances
ffi = FFI(backend=self.Backend())
assert ffi.sizeof("struct{int a;}") == ffi.sizeof("int")
+
+ def test_callback_large_struct(self):
+ ffi = FFI(backend=self.Backend())
+ # more than 8 bytes
+ ffi.cdef("struct foo_s { unsigned long a, b, c; };")
+ #
+ @ffi.callback("void(struct foo_s)")
+ def cb(s):
+ seen.append(ffi.typeof(s))
+ s.a += 1
+ s.b += 2
+ s.c += 3
+ seen.append(s.a)
+ seen.append(s.b)
+ seen.append(s.c)
+ #
+ s1 = ffi.new("struct foo_s *", {'a': 100, 'b': 200, 'c': 300})
+ seen = []
+ cb(s1[0])
+ assert len(seen) == 4
+ assert s1.a == 100 # unmodified
+ assert s1.b == 200
+ assert s1.c == 300
+ assert seen[0] == ffi.typeof("struct foo_s")
+ assert seen[1] == 101
+ assert seen[2] == 202
+ assert seen[3] == 303
More information about the pypy-commit
mailing list