Author: Ronan Lamy <ronan.l...@gmail.com> Branch: cleanup-test_lib_pypy Changeset: r95480:da6688b781d8 Date: 2018-12-12 22:52 +0000 http://bitbucket.org/pypy/pypy/changeset/da6688b781d8/
Log: Make ctypes tests more py3-friendly diff --git a/extra_tests/ctypes_tests/test_array.py b/extra_tests/ctypes_tests/test_array.py --- a/extra_tests/ctypes_tests/test_array.py +++ b/extra_tests/ctypes_tests/test_array.py @@ -2,7 +2,7 @@ from ctypes import * def test_slice(): - values = range(5) + values = list(range(5)) numarray = c_int * 5 na = numarray(*(c_int(x) for x in values)) @@ -14,7 +14,7 @@ def test_init_again(): sz = (c_char * 3)() addr1 = addressof(sz) - sz.__init__(*"foo") + sz.__init__(*b"foo") addr2 = addressof(sz) assert addr1 == addr2 @@ -33,18 +33,18 @@ A = c_char * 10 TP = POINTER(A) x = TP(A()) - assert x[0] != '' + assert x[0] != b'' A = c_wchar * 10 TP = POINTER(A) x = TP(A()) - assert x[0] != '' + assert x[0] != b'' def test_output_simple_array(): A = c_char * 10 AA = A * 10 aa = AA() - assert aa[0] != '' + assert aa[0] != b'' def test_output_complex_test(): class Car(Structure): @@ -52,13 +52,13 @@ ("speed", c_float), ("owner", c_char * 10)] - assert isinstance(Car("abcdefghi", 42.0, "12345").brand, bytes) - assert Car("abcdefghi", 42.0, "12345").brand == "abcdefghi" - assert Car("abcdefghio", 42.0, "12345").brand == "abcdefghio" + assert isinstance(Car(b"abcdefghi", 42.0, b"12345").brand, bytes) + assert Car(b"abcdefghi", 42.0, b"12345").brand == b"abcdefghi" + assert Car(b"abcdefghio", 42.0, b"12345").brand == b"abcdefghio" with pytest.raises(ValueError): - Car("abcdefghiop", 42.0, "12345") + Car(b"abcdefghiop", 42.0, b"12345") A = Car._fields_[2][1] TP = POINTER(A) x = TP(A()) - assert x[0] != '' + assert x[0] != b'' diff --git a/extra_tests/ctypes_tests/test_buffers.py b/extra_tests/ctypes_tests/test_buffers.py --- a/extra_tests/ctypes_tests/test_buffers.py +++ b/extra_tests/ctypes_tests/test_buffers.py @@ -11,26 +11,26 @@ assert sizeof(b) == 33 * sizeof(c_char) assert type(b[0]) is str - b = create_string_buffer("abc") + b = create_string_buffer(b"abc") assert len(b) == 4 # trailing nul char assert sizeof(b) == 4 * sizeof(c_char) assert type(b[0]) is str - assert b[0] == "a" - assert b[:] == "abc\0" + assert b[0] == b"a" + assert b[:] == b"abc\0" def test_from_buffer(): - b1 = bytearray("abcde") + b1 = bytearray(b"abcde") b = (c_char * 5).from_buffer(b1) - assert b[2] == "c" + assert b[2] == b"c" # - b1 = bytearray("abcd") + b1 = bytearray(b"abcd") b = c_int.from_buffer(b1) assert b.value in (1684234849, # little endian 1633837924) # big endian def test_from_buffer_keepalive(): # Issue #2878 - b1 = bytearray("ab") + b1 = bytearray(b"ab") array = (c_uint16 * 32)() array[6] = c_uint16.from_buffer(b1) # this is also what we get on CPython. I don't think it makes diff --git a/extra_tests/ctypes_tests/test_callbacks.py b/extra_tests/ctypes_tests/test_callbacks.py --- a/extra_tests/ctypes_tests/test_callbacks.py +++ b/extra_tests/ctypes_tests/test_callbacks.py @@ -44,8 +44,8 @@ (c_float, -math.e), (c_double, 3.14), (c_double, -3.14), - (c_char, "x"), - (c_char, "a"), + (c_char, b"x"), + (c_char, b"a"), ]) @pytest.mark.parametrize('functype', functypes) def test_types(typ, arg, functype): diff --git a/extra_tests/ctypes_tests/test_extra.py b/extra_tests/ctypes_tests/test_extra.py --- a/extra_tests/ctypes_tests/test_extra.py +++ b/extra_tests/ctypes_tests/test_extra.py @@ -54,20 +54,20 @@ def test_char_p(): - x = c_char_p("hello\x00world") - assert x.value == "hello" - x.value = "world" - assert x.value == "world" + x = c_char_p(b"hello\x00world") + assert x.value == b"hello" + x.value = b"world" + assert x.value == b"world" p = pointer(x) - assert p[0] == x.value == "world" - p[0] = "other" - assert x.value == p.contents.value == p[0] == "other" + assert p[0] == x.value == b"world" + p[0] = b"other" + assert x.value == p.contents.value == p[0] == b"other" myarray = (c_char_p * 10)() - myarray[7] = "hello" + myarray[7] = b"hello" assert isinstance(myarray[7], str) - assert myarray[7] == "hello" + assert myarray[7] == b"hello" def test_struct(): class tagpoint(Structure): @@ -113,33 +113,33 @@ def test_char_array(): a = (c_char * 3)() - a[0] = 'x' - a[1] = 'y' - assert a.value == 'xy' - a[2] = 'z' - assert a.value == 'xyz' + a[0] = b'x' + a[1] = b'y' + assert a.value == b'xy' + a[2] = b'z' + assert a.value == b'xyz' b = create_string_buffer(3) assert type(b) is type(a) assert len(b) == 3 - b.value = "nxw" - assert b[0] == 'n' - assert b[1] == 'x' - assert b[2] == 'w' + b.value = b"nxw" + assert b[0] == b'n' + assert b[1] == b'x' + assert b[2] == b'w' - b.value = "?" - assert b[0] == '?' - assert b[1] == '\x00' - assert b[2] == 'w' + b.value = b"?" + assert b[0] == b'?' + assert b[1] == b'\x00' + assert b[2] == b'w' class S(Structure): _fields_ = [('p', POINTER(c_char))] s = S() s.p = b - s.p.contents.value = '!' - assert b.value == '!' + s.p.contents.value = b'!' + assert b.value == b'!' assert len(create_string_buffer(0)) == 0 @@ -168,7 +168,7 @@ assert not c_int(0) # a bit strange, if you ask me assert c_int(-1) assert not c_byte(0) - assert not c_char('\x00') # hum + assert not c_char(b'\x00') # hum assert not c_float(0.0) assert not c_double(0.0) assert not c_ulonglong(0) @@ -192,18 +192,18 @@ # automatic conversions to c_char_p func.argtypes = [c_char_p] - assert func("hello") == "hello" - assert func(c_char_p("hello")) == "hello" - assert func((c_char * 6)(*"hello")) == "hello" - assert func(create_string_buffer("hello")) == "hello" + assert func(b"hello") == b"hello" + assert func(c_char_p(b"hello")) == b"hello" + assert func((c_char * 6)(*b"hello")) == b"hello" + assert func(create_string_buffer(b"hello")) == b"hello" # automatic conversions to c_void_p func.argtypes = [c_void_p] - assert func("hello") == "hello" - assert func(c_char_p("hello")) == "hello" - assert func((c_char * 6)(*"hello")) == "hello" - assert func((c_byte * 6)(104,101,108,108,111)) =="hello" - assert func(create_string_buffer("hello")) == "hello" + assert func(b"hello") == b"hello" + assert func(c_char_p(b"hello")) == b"hello" + assert func((c_char * 6)(*b"hello")) == b"hello" + assert func((c_byte * 6)(104,101,108,108,111)) ==b"hello" + assert func(create_string_buffer(b"hello")) == b"hello" def test_varsize_cast(): import struct diff --git a/extra_tests/ctypes_tests/test_functions.py b/extra_tests/ctypes_tests/test_functions.py --- a/extra_tests/ctypes_tests/test_functions.py +++ b/extra_tests/ctypes_tests/test_functions.py @@ -12,7 +12,7 @@ f.argtypes = [c_byte, c_short, c_int, c_long, c_float, c_double] f.restype = c_char result = f(0, 0, 0, 0, 0, 0) - assert result == '\x00' + assert result == b'\x00' def test_boolresult(dll): f = dll._testfunc_i_bhilfd @@ -43,10 +43,10 @@ f.restype = c_char f.argtypes = [POINTER(c_char_p)] # - s = c_char_p('hello world') + s = c_char_p(b'hello world') ps = pointer(s) - assert f(ps) == 'h' - assert f(s) == 'h' # automatic conversion from char** to char* + assert f(ps) == b'h' + assert f(s) == b'h' # automatic conversion from char** to char* ################################################################ @@ -54,8 +54,8 @@ f = dll.my_strchr f.argtypes = [c_char_p] f.restype = c_char_p - result = f("abcd", ord("b")) - assert result == "bcd" + result = f(b"abcd", ord("b")) + assert result == b"bcd" @pytest.mark.pypy_only def test_keepalive_buffers(monkeypatch, dll): @@ -72,8 +72,8 @@ return orig__call_funcptr(funcptr, *newargs) monkeypatch.setattr(f, '_call_funcptr', _call_funcptr) # - result = f("abcd", ord("b")) - assert result == "bcd" + result = f(b"abcd", ord("b")) + assert result == b"bcd" def test_caching_bug_1(dll): # the same test as test_call_some_args, with two extra lines @@ -82,17 +82,17 @@ f = dll.my_strchr f.argtypes = [c_char_p, c_int] f.restype = c_char_p - result = f("abcd", ord("b")) - assert result == "bcd" - result = f("abcd", ord("b"), 42) - assert result == "bcd" + result = f(b"abcd", ord("b")) + assert result == b"bcd" + result = f(b"abcd", ord("b"), 42) + assert result == b"bcd" def test_argument_conversion_and_checks(dll): #This test is designed to check for segfaults if the wrong type of argument is passed as parameter strlen = dll.my_strchr strlen.argtypes = [c_char_p, c_int] strlen.restype = c_char_p - assert strlen("eggs", ord("g")) == "ggs" + assert strlen(b"eggs", ord("g")) == b"ggs" # Should raise ArgumentError, not segfault with pytest.raises(ArgumentError): @@ -205,10 +205,10 @@ get_data_signature = ('test_issue1655', dll) get_data = get_data_prototype(get_data_signature, get_data_paramflag) - assert get_data('testing!') == 4 + assert get_data(b'testing!') == 4 get_data.errcheck = ret_list_p(1) - assert get_data('testing!') == [-1, -2, -3, -4] + assert get_data(b'testing!') == [-1, -2, -3, -4] def test_issue2533(tmpdir): import cffi diff --git a/extra_tests/ctypes_tests/test_guess_argtypes.py b/extra_tests/ctypes_tests/test_guess_argtypes.py --- a/extra_tests/ctypes_tests/test_guess_argtypes.py +++ b/extra_tests/ctypes_tests/test_guess_argtypes.py @@ -18,7 +18,7 @@ assert guess(13) == c_int assert guess(0) == c_int - assert guess('xca') == c_char_p + assert guess(b'xca') == c_char_p assert guess(None) == c_void_p assert guess(c_int(3)) == c_int assert guess(u'xca') == c_wchar_p diff --git a/extra_tests/ctypes_tests/test_keepalive.py b/extra_tests/ctypes_tests/test_keepalive.py --- a/extra_tests/ctypes_tests/test_keepalive.py +++ b/extra_tests/ctypes_tests/test_keepalive.py @@ -101,12 +101,12 @@ p = pointer(x) assert p._objects == {'1':x} p[0] = y - assert p._objects.keys() == ['1'] + assert list(p._objects.keys()) == ['1'] assert p._objects['1'].value == 3 @pytest.mark.pypy_only def test_primitive(): - assert c_char_p("abc")._objects._buffer[0] == "a" + assert c_char_p(b"abc")._objects._buffer[0] == b"a" assert c_int(3)._objects is None def test_pointer_to_pointer(): @@ -222,13 +222,12 @@ def test_c_char_p(): n = 2 - xs = "hello" * n + xs = b"hello" * n x = c_char_p(xs) del xs import gc; gc.collect() - print 'x =', repr(x) - assert x.value == 'hellohello' - assert x._objects == 'hellohello' + assert x.value == b'hellohello' + assert x._objects == b'hellohello' # class datum(Structure): _fields_ = [ @@ -242,7 +241,7 @@ ] for wrap in [False, True]: n = 2 - xs = "hello" * n + xs = b"hello" * n if wrap: xs = c_char_p(xs) dat = datum() @@ -250,19 +249,15 @@ dat.dsize = 15 del xs import gc; gc.collect() - print 'dat.dptr =', repr(dat.dptr) - print 'dat._objects =', repr(dat._objects) - assert dat.dptr == "hellohello" - assert dat._objects.keys() == ['0'] + assert dat.dptr == b"hellohello" + assert list(dat._objects.keys()) == ['0'] - xs = "hello" * n + xs = b"hello" * n if wrap: xs = c_char_p(xs) dat = union() dat.dptr = xs del xs import gc; gc.collect() - print 'dat.dptr =', repr(dat.dptr) - print 'dat._objects =', repr(dat._objects) - assert dat.dptr == "hellohello" - assert dat._objects.keys() == ['0'] + assert dat.dptr == b"hellohello" + assert list(dat._objects.keys()) == ['0'] diff --git a/extra_tests/ctypes_tests/test_prototypes.py b/extra_tests/ctypes_tests/test_prototypes.py --- a/extra_tests/ctypes_tests/test_prototypes.py +++ b/extra_tests/ctypes_tests/test_prototypes.py @@ -29,31 +29,31 @@ def test_kwargs(dll): proto = CFUNCTYPE(c_char_p, c_char_p, c_int) - paramflags = (1, 'text', "tavino"), (1, 'letter', ord('v')) + paramflags = (1, 'text', b"tavino"), (1, 'letter', ord('v')) func = proto(('my_strchr', dll), paramflags) assert func.argtypes == (c_char_p, c_int) assert func.restype == c_char_p - result = func("abcd", ord('b')) - assert result == "bcd" + result = func(b"abcd", ord('b')) + assert result == b"bcd" result = func() - assert result == "vino" + assert result == b"vino" - result = func("grapevine") - assert result == "vine" + result = func(b"grapevine") + assert result == b"vine" - result = func(text="grapevine") - assert result == "vine" + result = func(text=b"grapevine") + assert result == b"vine" result = func(letter=ord('i')) - assert result == "ino" + assert result == b"ino" - result = func(letter=ord('p'), text="impossible") - assert result == "possible" + result = func(letter=ord('p'), text=b"impossible") + assert result == b"possible" - result = func(text="impossible", letter=ord('p')) - assert result == "possible" + result = func(text=b"impossible", letter=ord('p')) + assert result == b"possible" def test_array_to_ptr_wrongtype(dll): ARRAY = c_byte * 8 diff --git a/extra_tests/ctypes_tests/test_structures.py b/extra_tests/ctypes_tests/test_structures.py --- a/extra_tests/ctypes_tests/test_structures.py +++ b/extra_tests/ctypes_tests/test_structures.py @@ -22,8 +22,8 @@ ("age", c_int)) # short enough - p = Person("123456", 6) - assert p.name == "123456" + p = Person(b"123456", 6) + assert p.name == b"123456" assert p.age == 6 def test___init__(): @@ -32,11 +32,11 @@ ("age", c_int)) def __init__(self, name, surname, age): - self.name = name + ' ' + surname + self.name = name + b' ' + surname self.age = age - p = Person("John", "Doe", 25) - assert p.name == "John Doe" + p = Person(b"John", b"Doe", 25) + assert p.name == b"John Doe" assert p.age == 25 def test_setattr(): diff --git a/extra_tests/ctypes_tests/test_unions.py b/extra_tests/ctypes_tests/test_unions.py --- a/extra_tests/ctypes_tests/test_unions.py +++ b/extra_tests/ctypes_tests/test_unions.py @@ -8,9 +8,9 @@ stuff = Stuff() stuff.y = ord('x') | (ord('z') << 24) if sys.byteorder == 'little': - assert stuff.x == 'x' + assert stuff.x == b'x' else: - assert stuff.x == 'z' + assert stuff.x == b'z' def test_union_of_structures(): class Stuff(Structure): diff --git a/extra_tests/ctypes_tests/test_values.py b/extra_tests/ctypes_tests/test_values.py --- a/extra_tests/ctypes_tests/test_values.py +++ b/extra_tests/ctypes_tests/test_values.py @@ -5,6 +5,6 @@ A testcase which accesses *values* in a dll. """ a_string = (c_char * 16).in_dll(dll, "a_string") - assert a_string.raw == "0123456789abcdef" - a_string[15] = '$' + assert a_string.raw == b"0123456789abcdef" + a_string[15:16] = b'$' assert dll.get_a_string_char(15) == ord('$') _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit