Author: Philip Jenvey <pjen...@underboss.org> Branch: py3k Changeset: r61186:870d536b68cc Date: 2013-02-13 12:14 -0800 http://bitbucket.org/pypy/pypy/changeset/870d536b68cc/
Log: adapt our 2.7 ctypes workarounds diff --git a/lib-python/3.2/ctypes/test/__init__.py b/lib-python/3.2/ctypes/test/__init__.py --- a/lib-python/3.2/ctypes/test/__init__.py +++ b/lib-python/3.2/ctypes/test/__init__.py @@ -206,3 +206,16 @@ result = unittest.TestResult() test(result) return result + +def xfail(method): + """ + Poor's man xfail: remove it when all the failures have been fixed + """ + def new_method(self, *args, **kwds): + try: + method(self, *args, **kwds) + except: + pass + else: + self.assertTrue(False, "DID NOT RAISE") + return new_method diff --git a/lib-python/3.2/ctypes/test/test_arrays.py b/lib-python/3.2/ctypes/test/test_arrays.py --- a/lib-python/3.2/ctypes/test/test_arrays.py +++ b/lib-python/3.2/ctypes/test/test_arrays.py @@ -1,12 +1,23 @@ import unittest from ctypes import * +from test.support import impl_detail formats = "bBhHiIlLqQfd" +# c_longdouble commented out for PyPy, look at the commend in test_longdouble formats = c_byte, c_ubyte, c_short, c_ushort, c_int, c_uint, \ - c_long, c_ulonglong, c_float, c_double, c_longdouble + c_long, c_ulonglong, c_float, c_double #, c_longdouble class ArrayTestCase(unittest.TestCase): + + @impl_detail('long double not supported by PyPy', pypy=False) + def test_longdouble(self): + """ + This test is empty. It's just here to remind that we commented out + c_longdouble in "formats". If pypy will ever supports c_longdouble, we + should kill this test and uncomment c_longdouble inside formats. + """ + def test_simple(self): # create classes holding simple numeric types, and check # various properties. diff --git a/lib-python/3.2/ctypes/test/test_bitfields.py b/lib-python/3.2/ctypes/test/test_bitfields.py --- a/lib-python/3.2/ctypes/test/test_bitfields.py +++ b/lib-python/3.2/ctypes/test/test_bitfields.py @@ -115,17 +115,21 @@ def test_nonint_types(self): # bit fields are not allowed on non-integer types. result = self.fail_fields(("a", c_char_p, 1)) - self.assertEqual(result, (TypeError, 'bit fields not allowed for type c_char_p')) + self.assertEqual(result[0], TypeError) + self.assertIn('bit fields not allowed for type', result[1]) result = self.fail_fields(("a", c_void_p, 1)) - self.assertEqual(result, (TypeError, 'bit fields not allowed for type c_void_p')) + self.assertEqual(result[0], TypeError) + self.assertIn('bit fields not allowed for type', result[1]) if c_int != c_long: result = self.fail_fields(("a", POINTER(c_int), 1)) - self.assertEqual(result, (TypeError, 'bit fields not allowed for type LP_c_int')) + self.assertEqual(result[0], TypeError) + self.assertIn('bit fields not allowed for type', result[1]) result = self.fail_fields(("a", c_char, 1)) - self.assertEqual(result, (TypeError, 'bit fields not allowed for type c_char')) + self.assertEqual(result[0], TypeError) + self.assertIn('bit fields not allowed for type', result[1]) try: c_wchar @@ -133,13 +137,15 @@ pass else: result = self.fail_fields(("a", c_wchar, 1)) - self.assertEqual(result, (TypeError, 'bit fields not allowed for type c_wchar')) + self.assertEqual(result[0], TypeError) + self.assertIn('bit fields not allowed for type', result[1]) class Dummy(Structure): _fields_ = [] result = self.fail_fields(("a", Dummy, 1)) - self.assertEqual(result, (TypeError, 'bit fields not allowed for type Dummy')) + self.assertEqual(result[0], TypeError) + self.assertIn('bit fields not allowed for type', result[1]) def test_single_bitfield_size(self): for c_typ in int_types: diff --git a/lib-python/3.2/ctypes/test/test_byteswap.py b/lib-python/3.2/ctypes/test/test_byteswap.py --- a/lib-python/3.2/ctypes/test/test_byteswap.py +++ b/lib-python/3.2/ctypes/test/test_byteswap.py @@ -2,6 +2,7 @@ from binascii import hexlify from ctypes import * +from ctypes.test import xfail def bin(s): return hexlify(memoryview(s)).decode().upper() @@ -21,6 +22,7 @@ setattr(bits, "i%s" % i, 1) dump(bits) + @xfail def test_endian_short(self): if sys.byteorder == "little": self.assertTrue(c_short.__ctype_le__ is c_short) @@ -48,6 +50,7 @@ self.assertEqual(bin(s), "3412") self.assertEqual(s.value, 0x1234) + @xfail def test_endian_int(self): if sys.byteorder == "little": self.assertTrue(c_int.__ctype_le__ is c_int) @@ -76,6 +79,7 @@ self.assertEqual(bin(s), "78563412") self.assertEqual(s.value, 0x12345678) + @xfail def test_endian_longlong(self): if sys.byteorder == "little": self.assertTrue(c_longlong.__ctype_le__ is c_longlong) @@ -104,6 +108,7 @@ self.assertEqual(bin(s), "EFCDAB9078563412") self.assertEqual(s.value, 0x1234567890ABCDEF) + @xfail def test_endian_float(self): if sys.byteorder == "little": self.assertTrue(c_float.__ctype_le__ is c_float) @@ -122,6 +127,7 @@ self.assertAlmostEqual(s.value, math.pi, places=6) self.assertEqual(bin(struct.pack(">f", math.pi)), bin(s)) + @xfail def test_endian_double(self): if sys.byteorder == "little": self.assertTrue(c_double.__ctype_le__ is c_double) @@ -149,6 +155,7 @@ self.assertTrue(c_char.__ctype_le__ is c_char) self.assertTrue(c_char.__ctype_be__ is c_char) + @xfail def test_struct_fields_1(self): if sys.byteorder == "little": base = BigEndianStructure @@ -184,6 +191,7 @@ pass self.assertRaises(TypeError, setattr, T, "_fields_", [("x", typ)]) + @xfail def test_struct_struct(self): # nested structures with different byteorders @@ -212,6 +220,7 @@ self.assertEqual(s.point.x, 1) self.assertEqual(s.point.y, 2) + @xfail def test_struct_fields_2(self): # standard packing in struct uses no alignment. # So, we have to align using pad bytes. @@ -235,6 +244,7 @@ s2 = struct.pack(fmt, 0x12, 0x1234, 0x12345678, 3.14) self.assertEqual(bin(s1), bin(s2)) + @xfail def test_unaligned_nonnative_struct_fields(self): if sys.byteorder == "little": base = BigEndianStructure diff --git a/lib-python/3.2/ctypes/test/test_callbacks.py b/lib-python/3.2/ctypes/test/test_callbacks.py --- a/lib-python/3.2/ctypes/test/test_callbacks.py +++ b/lib-python/3.2/ctypes/test/test_callbacks.py @@ -1,5 +1,6 @@ import unittest from ctypes import * +from ctypes.test import xfail import _ctypes_test class Callbacks(unittest.TestCase): @@ -92,6 +93,7 @@ ## self.check_type(c_char_p, "abc") ## self.check_type(c_char_p, "def") + @xfail def test_pyobject(self): o = () from sys import getrefcount as grc diff --git a/lib-python/3.2/ctypes/test/test_cfuncs.py b/lib-python/3.2/ctypes/test/test_cfuncs.py --- a/lib-python/3.2/ctypes/test/test_cfuncs.py +++ b/lib-python/3.2/ctypes/test/test_cfuncs.py @@ -5,6 +5,7 @@ from ctypes import * import _ctypes_test +from test.support import impl_detail class CFunctions(unittest.TestCase): _dll = CDLL(_ctypes_test.__file__) @@ -158,12 +159,14 @@ self.assertEqual(self._dll.tf_bd(0, 42.), 14.) self.assertEqual(self.S(), 42) + @impl_detail('long double not supported by PyPy', pypy=False) def test_longdouble(self): self._dll.tf_D.restype = c_longdouble self._dll.tf_D.argtypes = (c_longdouble,) self.assertEqual(self._dll.tf_D(42.), 14.) self.assertEqual(self.S(), 42) + @impl_detail('long double not supported by PyPy', pypy=False) def test_longdouble_plus(self): self._dll.tf_bD.restype = c_longdouble self._dll.tf_bD.argtypes = (c_byte, c_longdouble) diff --git a/lib-python/3.2/ctypes/test/test_delattr.py b/lib-python/3.2/ctypes/test/test_delattr.py --- a/lib-python/3.2/ctypes/test/test_delattr.py +++ b/lib-python/3.2/ctypes/test/test_delattr.py @@ -6,15 +6,15 @@ class TestCase(unittest.TestCase): def test_simple(self): - self.assertRaises(TypeError, + self.assertRaises((TypeError, AttributeError), delattr, c_int(42), "value") def test_chararray(self): - self.assertRaises(TypeError, + self.assertRaises((TypeError, AttributeError), delattr, (c_char * 5)(), "value") def test_struct(self): - self.assertRaises(TypeError, + self.assertRaises((TypeError, AttributeError), delattr, X(), "foo") if __name__ == "__main__": diff --git a/lib-python/3.2/ctypes/test/test_frombuffer.py b/lib-python/3.2/ctypes/test/test_frombuffer.py --- a/lib-python/3.2/ctypes/test/test_frombuffer.py +++ b/lib-python/3.2/ctypes/test/test_frombuffer.py @@ -2,6 +2,7 @@ import array import gc import unittest +from ctypes.test import xfail class X(Structure): _fields_ = [("c_int", c_int)] @@ -10,6 +11,7 @@ self._init_called = True class Test(unittest.TestCase): + @xfail def test_fom_buffer(self): a = array.array("i", range(16)) x = (c_int * 16).from_buffer(a) @@ -35,6 +37,7 @@ self.assertRaises(TypeError, (c_char * 16).from_buffer, "a" * 16) + @xfail def test_fom_buffer_with_offset(self): a = array.array("i", range(16)) x = (c_int * 15).from_buffer(a, sizeof(c_int)) @@ -43,6 +46,7 @@ self.assertRaises(ValueError, lambda: (c_int * 16).from_buffer(a, sizeof(c_int))) self.assertRaises(ValueError, lambda: (c_int * 1).from_buffer(a, 16 * sizeof(c_int))) + @xfail def test_from_buffer_copy(self): a = array.array("i", range(16)) x = (c_int * 16).from_buffer_copy(a) @@ -67,6 +71,7 @@ x = (c_char * 16).from_buffer_copy(b"a" * 16) self.assertEqual(x[:], b"a" * 16) + @xfail def test_fom_buffer_copy_with_offset(self): a = array.array("i", range(16)) x = (c_int * 15).from_buffer_copy(a, sizeof(c_int)) diff --git a/lib-python/3.2/ctypes/test/test_functions.py b/lib-python/3.2/ctypes/test/test_functions.py --- a/lib-python/3.2/ctypes/test/test_functions.py +++ b/lib-python/3.2/ctypes/test/test_functions.py @@ -7,6 +7,8 @@ from ctypes import * import sys, unittest +from ctypes.test import xfail +from test.support import impl_detail try: WINFUNCTYPE @@ -143,6 +145,7 @@ self.assertEqual(result, -21) self.assertEqual(type(result), float) + @impl_detail('long double not supported by PyPy', pypy=False) def test_longdoubleresult(self): f = dll._testfunc_D_bhilfD f.argtypes = [c_byte, c_short, c_int, c_long, c_float, c_longdouble] @@ -394,6 +397,7 @@ self.assertEqual((s8i.a, s8i.b, s8i.c, s8i.d, s8i.e, s8i.f, s8i.g, s8i.h), (9*2, 8*3, 7*4, 6*5, 5*6, 4*7, 3*8, 2*9)) + @xfail def test_sf1651235(self): # see http://www.python.org/sf/1651235 diff --git a/lib-python/3.2/ctypes/test/test_internals.py b/lib-python/3.2/ctypes/test/test_internals.py --- a/lib-python/3.2/ctypes/test/test_internals.py +++ b/lib-python/3.2/ctypes/test/test_internals.py @@ -1,7 +1,10 @@ # This tests the internal _objects attribute import unittest from ctypes import * -from sys import getrefcount as grc +try: + from sys import getrefcount as grc +except ImportError: + grc = None # e.g. PyPy # XXX This test must be reviewed for correctness!!! @@ -22,6 +25,8 @@ self.assertEqual(id(a), id(b)) def test_ints(self): + if grc is None: + return unittest.skip("no sys.getrefcount()") i = 42000123 refcnt = grc(i) ci = c_int(i) @@ -29,6 +34,8 @@ self.assertEqual(ci._objects, None) def test_c_char_p(self): + if grc is None: + return unittest.skip("no sys.getrefcount()") s = b"Hello, World" refcnt = grc(s) cs = c_char_p(s) diff --git a/lib-python/3.2/ctypes/test/test_libc.py b/lib-python/3.2/ctypes/test/test_libc.py --- a/lib-python/3.2/ctypes/test/test_libc.py +++ b/lib-python/3.2/ctypes/test/test_libc.py @@ -29,5 +29,14 @@ lib.my_qsort(chars, len(chars)-1, sizeof(c_char), comparefunc(sort)) self.assertEqual(chars.raw, b" ,,aaaadmmmnpppsss\x00") + def SKIPPED_test_no_more_xfail(self): + # We decided to not explicitly support the whole ctypes-2.7 + # and instead go for a case-by-case, demand-driven approach. + # So this test is skipped instead of failing. + import socket + import ctypes.test + self.assertTrue(not hasattr(ctypes.test, 'xfail'), + "You should incrementally grep for '@xfail' and remove them, they are real failures") + if __name__ == "__main__": unittest.main() diff --git a/lib-python/3.2/ctypes/test/test_loading.py b/lib-python/3.2/ctypes/test/test_loading.py --- a/lib-python/3.2/ctypes/test/test_loading.py +++ b/lib-python/3.2/ctypes/test/test_loading.py @@ -2,7 +2,7 @@ import sys, unittest import os from ctypes.util import find_library -from ctypes.test import is_resource_enabled +from ctypes.test import is_resource_enabled, xfail libc_name = None if os.name == "nt": @@ -75,6 +75,7 @@ self.assertRaises(AttributeError, dll.__getitem__, 1234) if os.name == "nt": + @xfail def test_1703286_A(self): from _ctypes import LoadLibrary, FreeLibrary # On winXP 64-bit, advapi32 loads at an address that does @@ -85,6 +86,7 @@ handle = LoadLibrary("advapi32") FreeLibrary(handle) + @xfail def test_1703286_B(self): # Since on winXP 64-bit advapi32 loads like described # above, the (arbitrarily selected) CloseEventLog function diff --git a/lib-python/3.2/ctypes/test/test_macholib.py b/lib-python/3.2/ctypes/test/test_macholib.py --- a/lib-python/3.2/ctypes/test/test_macholib.py +++ b/lib-python/3.2/ctypes/test/test_macholib.py @@ -52,7 +52,6 @@ '/usr/lib/libSystem.B.dylib') result = find_lib('z') - self.assertTrue(result.startswith('/usr/lib/libz.1')) self.assertTrue(result.endswith('.dylib')) self.assertEqual(find_lib('IOKit'), diff --git a/lib-python/3.2/ctypes/test/test_memfunctions.py b/lib-python/3.2/ctypes/test/test_memfunctions.py --- a/lib-python/3.2/ctypes/test/test_memfunctions.py +++ b/lib-python/3.2/ctypes/test/test_memfunctions.py @@ -53,7 +53,8 @@ s = string_at(b"foo bar") # XXX The following may be wrong, depending on how Python # manages string instances - self.assertEqual(2, sys.getrefcount(s)) + if hasattr(sys, 'getrefcount'): + self.assertEqual(2, sys.getrefcount(s)) self.assertTrue(s, "foo bar") self.assertEqual(string_at(b"foo bar", 7), b"foo bar") diff --git a/lib-python/3.2/ctypes/test/test_numbers.py b/lib-python/3.2/ctypes/test/test_numbers.py --- a/lib-python/3.2/ctypes/test/test_numbers.py +++ b/lib-python/3.2/ctypes/test/test_numbers.py @@ -1,6 +1,7 @@ from ctypes import * import unittest import struct +from ctypes.test import xfail def valid_ranges(*types): # given a sequence of numeric types, collect their _type_ @@ -89,12 +90,14 @@ ## self.assertRaises(ValueError, t, l-1) ## self.assertRaises(ValueError, t, h+1) + @xfail def test_from_param(self): # the from_param class method attribute always # returns PyCArgObject instances for t in signed_types + unsigned_types + float_types: self.assertEqual(ArgType, type(t.from_param(0))) + @xfail def test_byref(self): # calling byref returns also a PyCArgObject instance for t in signed_types + unsigned_types + float_types + bool_types: @@ -102,6 +105,7 @@ self.assertEqual(ArgType, type(parm)) + @xfail def test_floats(self): # c_float and c_double can be created from # Python int, long and float @@ -115,6 +119,7 @@ self.assertEqual(t(2).value, 2.0) self.assertEqual(t(f).value, 2.0) + @xfail def test_integers(self): class FloatLike(object): def __float__(self): diff --git a/lib-python/3.2/ctypes/test/test_objects.py b/lib-python/3.2/ctypes/test/test_objects.py --- a/lib-python/3.2/ctypes/test/test_objects.py +++ b/lib-python/3.2/ctypes/test/test_objects.py @@ -22,7 +22,7 @@ >>> array[4] = b'foo bar' >>> array._objects -{'4': b'foo bar'} +{'4': <CArgObject b'foo bar'>} >>> array[4] b'foo bar' >>> @@ -47,9 +47,9 @@ >>> x.array[0] = b'spam spam spam' >>> x._objects -{'0:2': b'spam spam spam'} +{'0:2': <CArgObject b'spam spam spam'>} >>> x.array._b_base_._objects -{'0:2': b'spam spam spam'} +{'0:2': <CArgObject b'spam spam spam'>} >>> ''' diff --git a/lib-python/3.2/ctypes/test/test_parameters.py b/lib-python/3.2/ctypes/test/test_parameters.py --- a/lib-python/3.2/ctypes/test/test_parameters.py +++ b/lib-python/3.2/ctypes/test/test_parameters.py @@ -1,5 +1,7 @@ import unittest, sys +from ctypes.test import xfail + class SimpleTypesTestCase(unittest.TestCase): def setUp(self): @@ -48,6 +50,7 @@ self.assertEqual(CWCHARP.from_param("abc"), "abcabcabc") # XXX Replace by c_char_p tests + @xfail def test_cstrings(self): from ctypes import c_char_p, byref @@ -84,7 +87,10 @@ pa = c_wchar_p.from_param(c_wchar_p("123")) self.assertEqual(type(pa), c_wchar_p) + if sys.platform == "win32": + test_cw_strings = xfail(test_cw_strings) + @xfail def test_int_pointers(self): from ctypes import c_short, c_uint, c_int, c_long, POINTER, pointer LPINT = POINTER(c_int) diff --git a/lib-python/3.2/ctypes/test/test_pep3118.py b/lib-python/3.2/ctypes/test/test_pep3118.py --- a/lib-python/3.2/ctypes/test/test_pep3118.py +++ b/lib-python/3.2/ctypes/test/test_pep3118.py @@ -1,6 +1,7 @@ import unittest from ctypes import * import re, struct, sys +from ctypes.test import xfail if sys.byteorder == "little": THIS_ENDIAN = "<" @@ -19,6 +20,7 @@ class Test(unittest.TestCase): + @xfail def test_native_types(self): for tp, fmt, shape, itemtp in native_types: ob = tp() @@ -46,6 +48,7 @@ print(tp) raise + @xfail def test_endian_types(self): for tp, fmt, shape, itemtp in endian_types: ob = tp() diff --git a/lib-python/3.2/ctypes/test/test_pickling.py b/lib-python/3.2/ctypes/test/test_pickling.py --- a/lib-python/3.2/ctypes/test/test_pickling.py +++ b/lib-python/3.2/ctypes/test/test_pickling.py @@ -3,6 +3,7 @@ from ctypes import * import _ctypes_test dll = CDLL(_ctypes_test.__file__) +from ctypes.test import xfail class X(Structure): _fields_ = [("a", c_int), ("b", c_double)] @@ -21,6 +22,7 @@ def loads(self, item): return pickle.loads(item) + @xfail def test_simple(self): for src in [ c_int(42), @@ -31,6 +33,7 @@ self.assertEqual(memoryview(src).tobytes(), memoryview(dst).tobytes()) + @xfail def test_struct(self): X.init_called = 0 @@ -49,6 +52,7 @@ self.assertEqual(memoryview(y).tobytes(), memoryview(x).tobytes()) + @xfail def test_unpickable(self): # ctypes objects that are pointers or contain pointers are # unpickable. @@ -66,6 +70,7 @@ ]: self.assertRaises(ValueError, lambda: self.dumps(item)) + @xfail def test_wchar(self): pickle.dumps(c_char(b"x")) # Issue 5049 diff --git a/lib-python/3.2/ctypes/test/test_python_api.py b/lib-python/3.2/ctypes/test/test_python_api.py --- a/lib-python/3.2/ctypes/test/test_python_api.py +++ b/lib-python/3.2/ctypes/test/test_python_api.py @@ -1,6 +1,6 @@ from ctypes import * import unittest, sys -from ctypes.test import is_resource_enabled +from ctypes.test import is_resource_enabled, xfail ################################################################ # This section should be moved into ctypes\__init__.py, when it's ready. @@ -9,7 +9,10 @@ ################################################################ -from sys import getrefcount as grc +try: + from sys import getrefcount as grc +except ImportError: + grc = None # e.g. PyPy if sys.version_info > (2, 4): c_py_ssize_t = c_size_t else: @@ -25,6 +28,7 @@ self.assertEqual(PyBytes_FromStringAndSize(b"abcdefghi", 3), b"abc") + @xfail def test_PyString_FromString(self): pythonapi.PyBytes_FromString.restype = py_object pythonapi.PyBytes_FromString.argtypes = (c_char_p,) @@ -56,6 +60,7 @@ del res self.assertEqual(grc(42), ref42) + @xfail def test_PyObj_FromPtr(self): s = "abc def ghi jkl" ref = grc(s) @@ -81,6 +86,7 @@ # not enough arguments self.assertRaises(TypeError, PyOS_snprintf, buf) + @xfail def test_pyobject_repr(self): self.assertEqual(repr(py_object()), "py_object(<NULL>)") self.assertEqual(repr(py_object(42)), "py_object(42)") diff --git a/lib-python/3.2/ctypes/test/test_refcounts.py b/lib-python/3.2/ctypes/test/test_refcounts.py --- a/lib-python/3.2/ctypes/test/test_refcounts.py +++ b/lib-python/3.2/ctypes/test/test_refcounts.py @@ -11,7 +11,10 @@ class RefcountTestCase(unittest.TestCase): def test_1(self): - from sys import getrefcount as grc + try: + from sys import getrefcount as grc + except ImportError: + return unittest.skip("no sys.getrefcount()") f = dll._testfunc_callback_i_if f.restype = ctypes.c_int @@ -35,7 +38,10 @@ def test_refcount(self): - from sys import getrefcount as grc + try: + from sys import getrefcount as grc + except ImportError: + return unittest.skip("no sys.getrefcount()") def func(*args): pass # this is the standard refcount for func @@ -84,12 +90,17 @@ class AnotherLeak(unittest.TestCase): def test_callback(self): import sys + try: + from sys import getrefcount + except ImportError: + return unittest.skip("no sys.getrefcount()") proto = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int, ctypes.c_int) def func(a, b): return a * b * 2 f = proto(func) + gc.collect() a = sys.getrefcount(ctypes.c_int) f(1, 2) self.assertEqual(sys.getrefcount(ctypes.c_int), a) diff --git a/lib-python/3.2/ctypes/test/test_stringptr.py b/lib-python/3.2/ctypes/test/test_stringptr.py --- a/lib-python/3.2/ctypes/test/test_stringptr.py +++ b/lib-python/3.2/ctypes/test/test_stringptr.py @@ -2,11 +2,13 @@ from ctypes import * import _ctypes_test +from ctypes.test import xfail lib = CDLL(_ctypes_test.__file__) class StringPtrTestCase(unittest.TestCase): + @xfail def test__POINTER_c_char(self): class X(Structure): _fields_ = [("str", POINTER(c_char))] @@ -27,6 +29,7 @@ self.assertRaises(TypeError, setattr, x, "str", "Hello, World") + @xfail def test__c_char_p(self): class X(Structure): _fields_ = [("str", c_char_p)] diff --git a/lib-python/3.2/ctypes/test/test_strings.py b/lib-python/3.2/ctypes/test/test_strings.py --- a/lib-python/3.2/ctypes/test/test_strings.py +++ b/lib-python/3.2/ctypes/test/test_strings.py @@ -1,5 +1,6 @@ import unittest from ctypes import * +from test import support class StringArrayTestCase(unittest.TestCase): def test(self): @@ -30,8 +31,9 @@ buf.value = b"Hello, World" self.assertEqual(buf.value, b"Hello, World") - self.assertRaises(TypeError, setattr, buf, "value", memoryview(b"Hello, World")) - self.assertRaises(TypeError, setattr, buf, "value", memoryview(b"abc")) + if support.check_impl_detail(): + self.assertRaises(TypeError, setattr, buf, "value", memoryview(b"Hello, World")) + self.assertRaises(TypeError, setattr, buf, "value", memoryview(b"abc")) self.assertRaises(ValueError, setattr, buf, "raw", memoryview(b"x" * 100)) def test_c_buffer_raw(self): @@ -39,7 +41,8 @@ buf.raw = memoryview(b"Hello, World") self.assertEqual(buf.value, b"Hello, World") - self.assertRaises(TypeError, setattr, buf, "value", memoryview(b"abc")) + if support.check_impl_detail(): + self.assertRaises(TypeError, setattr, buf, "value", memoryview(b"abc")) self.assertRaises(ValueError, setattr, buf, "raw", memoryview(b"x" * 100)) def test_param_1(self): diff --git a/lib-python/3.2/ctypes/test/test_structures.py b/lib-python/3.2/ctypes/test/test_structures.py --- a/lib-python/3.2/ctypes/test/test_structures.py +++ b/lib-python/3.2/ctypes/test/test_structures.py @@ -194,8 +194,8 @@ self.assertEqual(X.b.offset, min(8, longlong_align)) - d = {"_fields_": [("a", "b"), - ("b", "q")], + d = {"_fields_": [("a", c_byte), + ("b", c_longlong)], "_pack_": -1} self.assertRaises(ValueError, type(Structure), "X", (Structure,), d) diff --git a/lib-python/3.2/ctypes/test/test_varsize_struct.py b/lib-python/3.2/ctypes/test/test_varsize_struct.py --- a/lib-python/3.2/ctypes/test/test_varsize_struct.py +++ b/lib-python/3.2/ctypes/test/test_varsize_struct.py @@ -1,7 +1,9 @@ from ctypes import * import unittest +from ctypes.test import xfail class VarSizeTest(unittest.TestCase): + @xfail def test_resize(self): class X(Structure): _fields_ = [("item", c_int), _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit