diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-07-27 23:36:41 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-07-27 23:36:41 (GMT) |
commit | 42746df17bd1f147f1bea90216ed9848efc730c8 (patch) | |
tree | c799b9f8c4392c53eb2ff6c6c5e4e0eaf43fc9fc /Lib | |
parent | 455f7bdc0543fa353d2666f16303b024c5e05155 (diff) | |
download | cpython-42746df17bd1f147f1bea90216ed9848efc730c8.zip cpython-42746df17bd1f147f1bea90216ed9848efc730c8.tar.gz cpython-42746df17bd1f147f1bea90216ed9848efc730c8.tar.bz2 |
Fix ctypes tests to avoid implicit bytes-unicode conversion
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/ctypes/test/test_arrays.py | 4 | ||||
-rw-r--r-- | Lib/ctypes/test/test_bitfields.py | 4 | ||||
-rw-r--r-- | Lib/ctypes/test/test_buffers.py | 2 | ||||
-rw-r--r-- | Lib/ctypes/test/test_bytes.py | 12 | ||||
-rw-r--r-- | Lib/ctypes/test/test_cast.py | 8 | ||||
-rw-r--r-- | Lib/ctypes/test/test_cfuncs.py | 2 | ||||
-rw-r--r-- | Lib/ctypes/test/test_errno.py | 4 | ||||
-rw-r--r-- | Lib/ctypes/test/test_internals.py | 10 | ||||
-rw-r--r-- | Lib/ctypes/test/test_keeprefs.py | 8 | ||||
-rw-r--r-- | Lib/ctypes/test/test_libc.py | 2 | ||||
-rw-r--r-- | Lib/ctypes/test/test_objects.py | 4 | ||||
-rw-r--r-- | Lib/ctypes/test/test_parameters.py | 4 | ||||
-rw-r--r-- | Lib/ctypes/test/test_prototypes.py | 2 | ||||
-rw-r--r-- | Lib/ctypes/test/test_python_api.py | 4 | ||||
-rw-r--r-- | Lib/ctypes/test/test_random_things.py | 2 | ||||
-rw-r--r-- | Lib/ctypes/test/test_repr.py | 4 | ||||
-rw-r--r-- | Lib/ctypes/test/test_returnfuncptrs.py | 8 | ||||
-rw-r--r-- | Lib/ctypes/test/test_stringptr.py | 6 | ||||
-rw-r--r-- | Lib/ctypes/test/test_strings.py | 10 | ||||
-rw-r--r-- | Lib/ctypes/test/test_structures.py | 18 |
20 files changed, 57 insertions, 61 deletions
diff --git a/Lib/ctypes/test/test_arrays.py b/Lib/ctypes/test/test_arrays.py index c0cdfd5..1a6f3b2 100644 --- a/Lib/ctypes/test/test_arrays.py +++ b/Lib/ctypes/test/test_arrays.py @@ -42,7 +42,7 @@ class ArrayTestCase(unittest.TestCase): CharArray = ARRAY(c_char, 3) - ca = CharArray("a", "b", "c") + ca = CharArray(b"a", b"b", b"c") # Should this work? It doesn't: # CharArray("abc") @@ -89,7 +89,7 @@ class ArrayTestCase(unittest.TestCase): def test_from_address(self): # Failed with 0.9.8, reported by JUrner - p = create_string_buffer("foo") + p = create_string_buffer(b"foo") sz = (c_char * 3).from_address(addressof(p)) self.assertEqual(sz[:], b"foo") self.assertEqual(sz[::], b"foo") diff --git a/Lib/ctypes/test/test_bitfields.py b/Lib/ctypes/test/test_bitfields.py index 4eb9571..9e0825c 100644 --- a/Lib/ctypes/test/test_bitfields.py +++ b/Lib/ctypes/test/test_bitfields.py @@ -37,14 +37,14 @@ class C_Test(unittest.TestCase): for name in "ABCDEFGHI": b = BITS() setattr(b, name, i) - self.assertEqual((name, i, getattr(b, name)), (name, i, func(byref(b), name))) + self.assertEqual(getattr(b, name), func(byref(b), name.encode('ascii'))) def test_shorts(self): for i in range(256): for name in "MNOPQRS": b = BITS() setattr(b, name, i) - self.assertEqual((name, i, getattr(b, name)), (name, i, func(byref(b), name))) + self.assertEqual(getattr(b, name), func(byref(b), name.encode('ascii'))) signed_int_types = (c_byte, c_short, c_int, c_long, c_longlong) unsigned_int_types = (c_ubyte, c_ushort, c_uint, c_ulong, c_ulonglong) diff --git a/Lib/ctypes/test/test_buffers.py b/Lib/ctypes/test/test_buffers.py index 3f8a587..40889ea 100644 --- a/Lib/ctypes/test/test_buffers.py +++ b/Lib/ctypes/test/test_buffers.py @@ -9,7 +9,7 @@ class StringBufferTestCase(unittest.TestCase): self.assertEqual(sizeof(b), 32 * sizeof(c_char)) self.assertTrue(type(b[0]) is bytes) - b = create_string_buffer("abc") + b = create_string_buffer(b"abc") self.assertEqual(len(b), 4) # trailing nul char self.assertEqual(sizeof(b), 4 * sizeof(c_char)) self.assertTrue(type(b[0]) is bytes) diff --git a/Lib/ctypes/test/test_bytes.py b/Lib/ctypes/test/test_bytes.py index 4a1d0fd..5386302 100644 --- a/Lib/ctypes/test/test_bytes.py +++ b/Lib/ctypes/test/test_bytes.py @@ -11,10 +11,10 @@ class BytesTest(unittest.TestCase): (c_char * 3)(b"a", b"b", b"c") def test_c_wchar(self): - x = c_wchar(b"x") - x.value = b"y" - c_wchar.from_param(b"x") - (c_wchar * 3)(b"a", b"b", b"c") + x = c_wchar("x") + x.value = "y" + c_wchar.from_param("x") + (c_wchar * 3)("a", "b", "c") def test_c_char_p(self): c_char_p("foo bar") @@ -37,8 +37,8 @@ class BytesTest(unittest.TestCase): class X(Structure): _fields_ = [("a", c_wchar * 3)] - X("abc") - x = X(b"abc") + X(b"abc") + x = X("abc") self.assertEqual(x.a, "abc") self.assertEqual(type(x.a), str) diff --git a/Lib/ctypes/test/test_cast.py b/Lib/ctypes/test/test_cast.py index 4c4a2e8..702de3c 100644 --- a/Lib/ctypes/test/test_cast.py +++ b/Lib/ctypes/test/test_cast.py @@ -33,17 +33,17 @@ class Test(unittest.TestCase): def test_p2a_objects(self): array = (c_char_p * 5)() self.assertEqual(array._objects, None) - array[0] = "foo bar" + array[0] = b"foo bar" self.assertEqual(array._objects, {'0': b"foo bar"}) p = cast(array, POINTER(c_char_p)) # array and p share a common _objects attribute self.assertTrue(p._objects is array._objects) self.assertEqual(array._objects, {'0': b"foo bar", id(array): array}) - p[0] = "spam spam" + p[0] = b"spam spam" self.assertEqual(p._objects, {'0': b"spam spam", id(array): array}) self.assertTrue(array._objects is p._objects) - p[1] = "foo bar" + p[1] = b"foo bar" self.assertEqual(p._objects, {'1': b'foo bar', '0': b"spam spam", id(array): array}) self.assertTrue(array._objects is p._objects) @@ -71,7 +71,7 @@ class Test(unittest.TestCase): def test_char_p(self): # This didn't work: bad argument to internal function - s = c_char_p("hiho") + s = c_char_p(b"hiho") self.assertEqual(cast(cast(s, c_void_p), c_char_p).value, b"hiho") diff --git a/Lib/ctypes/test/test_cfuncs.py b/Lib/ctypes/test/test_cfuncs.py index 493cbe9..f4bd3b1 100644 --- a/Lib/ctypes/test/test_cfuncs.py +++ b/Lib/ctypes/test/test_cfuncs.py @@ -107,7 +107,7 @@ class CFunctions(unittest.TestCase): def test_ulong_plus(self): self._dll.tf_bL.restype = c_ulong self._dll.tf_bL.argtypes = (c_char, c_ulong) - self.assertEqual(self._dll.tf_bL(' ', 4294967295), 1431655765) + self.assertEqual(self._dll.tf_bL(b' ', 4294967295), 1431655765) self.assertEqual(self.U(), 4294967295) def test_longlong(self): diff --git a/Lib/ctypes/test/test_errno.py b/Lib/ctypes/test/test_errno.py index 5695c17..4690a0d 100644 --- a/Lib/ctypes/test/test_errno.py +++ b/Lib/ctypes/test/test_errno.py @@ -19,7 +19,7 @@ class Test(unittest.TestCase): libc_open.argtypes = c_char_p, c_int - self.assertEqual(libc_open("", 0), -1) + self.assertEqual(libc_open(b"", 0), -1) self.assertEqual(get_errno(), errno.ENOENT) self.assertEqual(set_errno(32), errno.ENOENT) @@ -35,7 +35,7 @@ class Test(unittest.TestCase): else: libc_open = libc.open libc_open.argtypes = c_char_p, c_int - self.assertEqual(libc_open("", 0), -1) + self.assertEqual(libc_open(b"", 0), -1) self.assertEqual(get_errno(), 0) t = threading.Thread(target=_worker) diff --git a/Lib/ctypes/test/test_internals.py b/Lib/ctypes/test/test_internals.py index 1c7e4a8..cbf2e05 100644 --- a/Lib/ctypes/test/test_internals.py +++ b/Lib/ctypes/test/test_internals.py @@ -70,19 +70,17 @@ class ObjectsTestCase(unittest.TestCase): class Y(Structure): _fields_ = [("x", X), ("y", X)] - s1 = "Hello, World" - s2 = "Hallo, Welt" + s1 = b"Hello, World" + s2 = b"Hallo, Welt" x = X() x.a = s1 x.b = s2 - self.assertEqual(x._objects, {"0": bytes(s1, "ascii"), - "1": bytes(s2, "ascii")}) + self.assertEqual(x._objects, {"0": s1, "1": s2}) y = Y() y.x = x - self.assertEqual(y._objects, {"0": {"0": bytes(s1, "ascii"), - "1": bytes(s2, "ascii")}}) + self.assertEqual(y._objects, {"0": {"0": s1, "1": s2}}) ## x = y.x ## del y ## print x._b_base_._objects diff --git a/Lib/ctypes/test/test_keeprefs.py b/Lib/ctypes/test/test_keeprefs.py index b90765a..ef3e6eb 100644 --- a/Lib/ctypes/test/test_keeprefs.py +++ b/Lib/ctypes/test/test_keeprefs.py @@ -13,9 +13,9 @@ class SimpleTestCase(unittest.TestCase): def test_ccharp(self): x = c_char_p() self.assertEquals(x._objects, None) - x.value = "abc" + x.value = b"abc" self.assertEquals(x._objects, b"abc") - x = c_char_p("spam") + x = c_char_p(b"spam") self.assertEquals(x._objects, b"spam") class StructureTestCase(unittest.TestCase): @@ -37,8 +37,8 @@ class StructureTestCase(unittest.TestCase): x = X() self.assertEquals(x._objects, None) - x.a = "spam" - x.b = "foo" + x.a = b"spam" + x.b = b"foo" self.assertEquals(x._objects, {"0": b"spam", "1": b"foo"}) def test_struct_struct(self): diff --git a/Lib/ctypes/test/test_libc.py b/Lib/ctypes/test/test_libc.py index cce409f..56285b5 100644 --- a/Lib/ctypes/test/test_libc.py +++ b/Lib/ctypes/test/test_libc.py @@ -25,7 +25,7 @@ class LibTest(unittest.TestCase): def sort(a, b): return three_way_cmp(a[0], b[0]) - chars = create_string_buffer("spam, spam, and spam") + chars = create_string_buffer(b"spam, spam, and spam") lib.my_qsort(chars, len(chars)-1, sizeof(c_char), comparefunc(sort)) self.assertEqual(chars.raw, b" ,,aaaadmmmnpppsss\x00") diff --git a/Lib/ctypes/test/test_objects.py b/Lib/ctypes/test/test_objects.py index 750d904..f075c20 100644 --- a/Lib/ctypes/test/test_objects.py +++ b/Lib/ctypes/test/test_objects.py @@ -20,7 +20,7 @@ None The memory block stores pointers to strings, and the strings itself assigned from Python must be kept. ->>> array[4] = 'foo bar' +>>> array[4] = b'foo bar' >>> array._objects {'4': b'foo bar'} >>> array[4] @@ -45,7 +45,7 @@ of 'x' ('_b_base_' is either None, or the root object owning the memory block): <ctypes.test.test_objects.X object at 0x...> >>> ->>> x.array[0] = 'spam spam spam' +>>> x.array[0] = b'spam spam spam' >>> x._objects {'0:2': b'spam spam spam'} >>> x.array._b_base_._objects diff --git a/Lib/ctypes/test/test_parameters.py b/Lib/ctypes/test/test_parameters.py index 6a3f33d..468c449 100644 --- a/Lib/ctypes/test/test_parameters.py +++ b/Lib/ctypes/test/test_parameters.py @@ -19,7 +19,6 @@ class SimpleTypesTestCase(unittest.TestCase): else: set_conversion_mode(*self.prev_conv_mode) - def test_subclasses(self): from ctypes import c_void_p, c_char_p # ctypes 0.9.5 and before did overwrite from_param in SimpleType_new @@ -60,12 +59,11 @@ class SimpleTypesTestCase(unittest.TestCase): # new in 0.9.1: convert (encode) unicode to ascii self.assertEqual(c_char_p.from_param("123")._obj, b"123") self.assertRaises(UnicodeEncodeError, c_char_p.from_param, "123\377") - self.assertRaises(TypeError, c_char_p.from_param, 42) # calling c_char_p.from_param with a c_char_p instance # returns the argument itself: - a = c_char_p("123") + a = c_char_p(b"123") self.assertTrue(c_char_p.from_param(a) is a) def test_cw_strings(self): diff --git a/Lib/ctypes/test/test_prototypes.py b/Lib/ctypes/test/test_prototypes.py index d2e4c0b..6ef1b1b 100644 --- a/Lib/ctypes/test/test_prototypes.py +++ b/Lib/ctypes/test/test_prototypes.py @@ -127,7 +127,7 @@ class CharPointersTestCase(unittest.TestCase): self.assertEqual(None, func(c_char_p(None))) self.assertEqual(b"123", func(c_buffer(b"123"))) - ca = c_char("a") + ca = c_char(b"a") self.assertEqual(ord(b"a"), func(pointer(ca))[0]) self.assertEqual(ord(b"a"), func(byref(ca))[0]) diff --git a/Lib/ctypes/test/test_python_api.py b/Lib/ctypes/test/test_python_api.py index b74767a..1f4c603 100644 --- a/Lib/ctypes/test/test_python_api.py +++ b/Lib/ctypes/test/test_python_api.py @@ -72,10 +72,10 @@ class PythonAPITestCase(unittest.TestCase): PyOS_snprintf.argtypes = POINTER(c_char), c_size_t, c_char_p buf = c_buffer(256) - PyOS_snprintf(buf, sizeof(buf), "Hello from %s", b"ctypes") + PyOS_snprintf(buf, sizeof(buf), b"Hello from %s", b"ctypes") self.assertEqual(buf.value, b"Hello from ctypes") - PyOS_snprintf(buf, sizeof(buf), "Hello from %s (%d, %d, %d)", b"ctypes", 1, 2, 3) + PyOS_snprintf(buf, sizeof(buf), b"Hello from %s (%d, %d, %d)", b"ctypes", 1, 2, 3) self.assertEqual(buf.value, b"Hello from ctypes (1, 2, 3)") # not enough arguments diff --git a/Lib/ctypes/test/test_random_things.py b/Lib/ctypes/test/test_random_things.py index 7bb9db8..4e9f08f 100644 --- a/Lib/ctypes/test/test_random_things.py +++ b/Lib/ctypes/test/test_random_things.py @@ -66,7 +66,7 @@ class CallbackTracbackTestCase(unittest.TestCase): def test_TypeErrorDivisionError(self): cb = CFUNCTYPE(c_int, c_char_p)(callback_func) - out = self.capture_stderr(cb, "spam") + out = self.capture_stderr(cb, b"spam") self.assertEqual(out.splitlines()[-1], "TypeError: " "unsupported operand type(s) for /: 'int' and 'bytes'") diff --git a/Lib/ctypes/test/test_repr.py b/Lib/ctypes/test/test_repr.py index 9a1e238..60a2c80 100644 --- a/Lib/ctypes/test/test_repr.py +++ b/Lib/ctypes/test/test_repr.py @@ -22,8 +22,8 @@ class ReprTest(unittest.TestCase): self.assertEqual("<X object at", repr(typ(42))[:12]) def test_char(self): - self.assertEqual("c_char(b'x')", repr(c_char('x'))) - self.assertEqual("<X object at", repr(X('x'))[:12]) + self.assertEqual("c_char(b'x')", repr(c_char(b'x'))) + self.assertEqual("<X object at", repr(X(b'x'))[:12]) if __name__ == "__main__": unittest.main() diff --git a/Lib/ctypes/test/test_returnfuncptrs.py b/Lib/ctypes/test/test_returnfuncptrs.py index 11da07b..af1cadd 100644 --- a/Lib/ctypes/test/test_returnfuncptrs.py +++ b/Lib/ctypes/test/test_returnfuncptrs.py @@ -28,10 +28,10 @@ class ReturnFuncPtrTestCase(unittest.TestCase): # _CFuncPtr instances are now callable with an integer argument # which denotes a function address: strchr = CFUNCTYPE(c_char_p, c_char_p, c_char)(addr) - self.assertTrue(strchr("abcdef", "b"), "bcdef") - self.assertEqual(strchr("abcdef", "x"), None) - self.assertRaises(ArgumentError, strchr, "abcdef", 3.0) - self.assertRaises(TypeError, strchr, "abcdef") + self.assertTrue(strchr(b"abcdef", b"b"), "bcdef") + self.assertEqual(strchr(b"abcdef", b"x"), None) + self.assertRaises(ArgumentError, strchr, b"abcdef", 3.0) + self.assertRaises(TypeError, strchr, b"abcdef") if __name__ == "__main__": unittest.main() diff --git a/Lib/ctypes/test/test_stringptr.py b/Lib/ctypes/test/test_stringptr.py index 8b16dcb..3d25fa5 100644 --- a/Lib/ctypes/test/test_stringptr.py +++ b/Lib/ctypes/test/test_stringptr.py @@ -14,7 +14,7 @@ class StringPtrTestCase(unittest.TestCase): # NULL pointer access self.assertRaises(ValueError, getattr, x.str, "contents") - b = c_buffer("Hello, World") + b = c_buffer(b"Hello, World") from sys import getrefcount as grc self.assertEqual(grc(b), 2) x.str = b @@ -63,8 +63,8 @@ class StringPtrTestCase(unittest.TestCase): # So we must keep a reference to buf separately strchr.restype = POINTER(c_char) - buf = c_buffer("abcdef") - r = strchr(buf, "c") + buf = c_buffer(b"abcdef") + r = strchr(buf, b"c") x = r[0], r[1], r[2], r[3], r[4] self.assertEqual(x, (b"c", b"d", b"e", b"f", b"\000")) del buf diff --git a/Lib/ctypes/test/test_strings.py b/Lib/ctypes/test/test_strings.py index 3cd1f84..d6ffe3f 100644 --- a/Lib/ctypes/test/test_strings.py +++ b/Lib/ctypes/test/test_strings.py @@ -5,23 +5,23 @@ class StringArrayTestCase(unittest.TestCase): def test(self): BUF = c_char * 4 - buf = BUF("a", "b", "c") + buf = BUF(b"a", b"b", b"c") self.assertEqual(buf.value, b"abc") self.assertEqual(buf.raw, b"abc\000") - buf.value = "ABCD" + buf.value = b"ABCD" self.assertEqual(buf.value, b"ABCD") self.assertEqual(buf.raw, b"ABCD") - buf.value = "x" + buf.value = b"x" self.assertEqual(buf.value, b"x") self.assertEqual(buf.raw, b"x\000CD") - buf[1] = "Z" + buf[1] = b"Z" self.assertEqual(buf.value, b"xZCD") self.assertEqual(buf.raw, b"xZCD") - self.assertRaises(ValueError, setattr, buf, "value", "aaaaaaaa") + self.assertRaises(ValueError, setattr, buf, "value", b"aaaaaaaa") self.assertRaises(TypeError, setattr, buf, "value", 42) def test_c_buffer_value(self): diff --git a/Lib/ctypes/test/test_structures.py b/Lib/ctypes/test/test_structures.py index fb048aa..536ea50 100644 --- a/Lib/ctypes/test/test_structures.py +++ b/Lib/ctypes/test/test_structures.py @@ -205,15 +205,15 @@ class StructureTestCase(unittest.TestCase): ("age", c_int)] self.assertRaises(TypeError, Person, 42) - self.assertRaises(ValueError, Person, "asldkjaslkdjaslkdj") + self.assertRaises(ValueError, Person, b"asldkjaslkdjaslkdj") self.assertRaises(TypeError, Person, "Name", "HI") # short enough - self.assertEqual(Person("12345", 5).name, b"12345") + self.assertEqual(Person(b"12345", 5).name, b"12345") # exact fit - self.assertEqual(Person("123456", 5).name, b"123456") + self.assertEqual(Person(b"123456", 5).name, b"123456") # too long - self.assertRaises(ValueError, Person, "1234567", 5) + self.assertRaises(ValueError, Person, b"1234567", 5) def test_conflicting_initializers(self): class POINT(Structure): @@ -267,7 +267,7 @@ class StructureTestCase(unittest.TestCase): ("phone", Phone), ("age", c_int)] - p = Person("Someone", ("1234", "5678"), 5) + p = Person(b"Someone", (b"1234", b"5678"), 5) self.assertEqual(p.name, b"Someone") self.assertEqual(p.phone.areacode, b"1234") @@ -284,8 +284,8 @@ class StructureTestCase(unittest.TestCase): _fields_ = [("name", c_wchar * 12), ("age", c_int)] - p = PersonW("Someone") - self.assertEqual(p.name, "Someone") + p = PersonW("Someone \xe9") + self.assertEqual(p.name, "Someone \xe9") self.assertEqual(PersonW("1234567890").name, "1234567890") self.assertEqual(PersonW("12345678901").name, "12345678901") @@ -304,13 +304,13 @@ class StructureTestCase(unittest.TestCase): ("phone", Phone), ("age", c_int)] - cls, msg = self.get_except(Person, "Someone", (1, 2)) + cls, msg = self.get_except(Person, b"Someone", (1, 2)) self.assertEqual(cls, RuntimeError) self.assertEqual(msg, "(Phone) <class 'TypeError'>: " "expected string, int found") - cls, msg = self.get_except(Person, "Someone", ("a", "b", "c")) + cls, msg = self.get_except(Person, b"Someone", (b"a", b"b", b"c")) self.assertEqual(cls, RuntimeError) if issubclass(Exception, object): self.assertEqual(msg, |