Skip to content

Commit 03f05fa

Browse files
author
thomas.heller
committed
Merged revisions 74664 via svnmerge from
svn+ssh://[email protected]/python/branches/py3k ........ r74664 | thomas.heller | 2009-09-04 20:24:41 +0200 (Fr, 04 Sep 2009) | 1 line Issue 6239: ctypes.c_char_p return value must return bytes. ........ git-svn-id: http://svn.python.org/projects/python/branches/release31-maint@74665 6015fed2-1504-0410-9fe1-9d1591cc4771
1 parent 427d055 commit 03f05fa

15 files changed

Lines changed: 60 additions & 57 deletions

Lib/ctypes/test/test_cast.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def test_char_p(self):
7373
# This didn't work: bad argument to internal function
7474
s = c_char_p("hiho")
7575
self.assertEqual(cast(cast(s, c_void_p), c_char_p).value,
76-
"hiho")
76+
b"hiho")
7777

7878
try:
7979
c_wchar_p

Lib/ctypes/test/test_funcptr.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ def NoNullHandle(value):
9797
strchr = lib.my_strchr
9898
strchr.restype = c_char_p
9999
strchr.argtypes = (c_char_p, c_char)
100-
self.assertEqual(strchr("abcdefghi", "b"), "bcdefghi")
101-
self.assertEqual(strchr("abcdefghi", "x"), None)
100+
self.assertEqual(strchr(b"abcdefghi", b"b"), b"bcdefghi")
101+
self.assertEqual(strchr(b"abcdefghi", b"x"), None)
102102

103103

104104
strtok = lib.my_strtok
@@ -111,16 +111,16 @@ def c_string(init):
111111
size = len(init) + 1
112112
return (c_char*size)(*init)
113113

114-
s = "a\nb\nc"
114+
s = b"a\nb\nc"
115115
b = c_string(s)
116116

117117
## b = (c_char * (len(s)+1))()
118118
## b.value = s
119119

120120
## b = c_string(s)
121-
self.assertEqual(strtok(b, b"\n"), "a")
122-
self.assertEqual(strtok(None, b"\n"), "b")
123-
self.assertEqual(strtok(None, b"\n"), "c")
121+
self.assertEqual(strtok(b, b"\n"), b"a")
122+
self.assertEqual(strtok(None, b"\n"), b"b")
123+
self.assertEqual(strtok(None, b"\n"), b"c")
124124
self.assertEqual(strtok(None, b"\n"), None)
125125

126126
if __name__ == '__main__':

Lib/ctypes/test/test_functions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ def test_stringresult(self):
177177
f.argtypes = None
178178
f.restype = c_char_p
179179
result = f(b"123")
180-
self.assertEqual(result, "123")
180+
self.assertEqual(result, b"123")
181181

182182
result = f(None)
183183
self.assertEqual(result, None)

Lib/ctypes/test/test_incomplete.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ class cell(Structure):
1717
SetPointerType(lpcell, cell)
1818

1919
c1 = cell()
20-
c1.name = "foo"
20+
c1.name = b"foo"
2121
c2 = cell()
22-
c2.name = "bar"
22+
c2.name = b"bar"
2323

2424
c1.next = pointer(c2)
2525
c2.next = pointer(c1)
@@ -30,7 +30,7 @@ class cell(Structure):
3030
for i in range(8):
3131
result.append(p.name)
3232
p = p.next[0]
33-
self.assertEqual(result, ["foo", "bar"] * 4)
33+
self.assertEqual(result, [b"foo", b"bar"] * 4)
3434

3535
# to not leak references, we must clean _pointer_type_cache
3636
from ctypes import _pointer_type_cache

Lib/ctypes/test/test_memfunctions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def test_memset(self):
3737

3838
def test_cast(self):
3939
a = (c_ubyte * 32)(*map(ord, "abcdef"))
40-
self.assertEqual(cast(a, c_char_p).value, "abcdef")
40+
self.assertEqual(cast(a, c_char_p).value, b"abcdef")
4141
self.assertEqual(cast(a, POINTER(c_byte))[:7],
4242
[97, 98, 99, 100, 101, 102, 0])
4343
self.assertEqual(cast(a, POINTER(c_byte))[:7:],

Lib/ctypes/test/test_objects.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
>>> array._objects
2525
{'4': b'foo bar'}
2626
>>> array[4]
27-
'foo bar'
27+
b'foo bar'
2828
>>>
2929
3030
It gets more complicated when the ctypes instance itself is contained

Lib/ctypes/test/test_pointers.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,10 @@ def test_charpp(self):
140140
func.restype = c_char_p
141141
argv = (c_char_p * 2)()
142142
argc = c_int( 2 )
143-
argv[0] = 'hello'
144-
argv[1] = 'world'
143+
argv[0] = b'hello'
144+
argv[1] = b'world'
145145
result = func( byref(argc), argv )
146-
assert result == 'world', result
146+
self.assertEqual(result, b'world')
147147

148148
def test_bug_1467852(self):
149149
# http://sourceforge.net/tracker/?func=detail&atid=532154&aid=1467852&group_id=71702

Lib/ctypes/test/test_prototypes.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -92,44 +92,44 @@ def test_POINTER_c_char_arg(self):
9292
func.argtypes = POINTER(c_char),
9393

9494
self.assertEqual(None, func(None))
95-
self.assertEqual("123", func("123"))
95+
self.assertEqual(b"123", func(b"123"))
9696
self.assertEqual(None, func(c_char_p(None)))
97-
self.assertEqual("123", func(c_char_p("123")))
97+
self.assertEqual(b"123", func(c_char_p(b"123")))
9898

99-
self.assertEqual("123", func(c_buffer("123")))
100-
ca = c_char("a")
101-
self.assertEqual("a", func(pointer(ca))[0])
102-
self.assertEqual("a", func(byref(ca))[0])
99+
self.assertEqual(b"123", func(c_buffer(b"123")))
100+
ca = c_char(b"a")
101+
self.assertEqual(ord(b"a"), func(pointer(ca))[0])
102+
self.assertEqual(ord(b"a"), func(byref(ca))[0])
103103

104104
def test_c_char_p_arg(self):
105105
func = testdll._testfunc_p_p
106106
func.restype = c_char_p
107107
func.argtypes = c_char_p,
108108

109109
self.assertEqual(None, func(None))
110-
self.assertEqual("123", func("123"))
110+
self.assertEqual(b"123", func(b"123"))
111111
self.assertEqual(None, func(c_char_p(None)))
112-
self.assertEqual("123", func(c_char_p("123")))
112+
self.assertEqual(b"123", func(c_char_p(b"123")))
113113

114-
self.assertEqual("123", func(c_buffer("123")))
115-
ca = c_char("a")
116-
self.assertEqual("a", func(pointer(ca))[0])
117-
self.assertEqual("a", func(byref(ca))[0])
114+
self.assertEqual(b"123", func(c_buffer(b"123")))
115+
ca = c_char(b"a")
116+
self.assertEqual(ord(b"a"), func(pointer(ca))[0])
117+
self.assertEqual(ord(b"a"), func(byref(ca))[0])
118118

119119
def test_c_void_p_arg(self):
120120
func = testdll._testfunc_p_p
121121
func.restype = c_char_p
122122
func.argtypes = c_void_p,
123123

124124
self.assertEqual(None, func(None))
125-
self.assertEqual("123", func(b"123"))
126-
self.assertEqual("123", func(c_char_p("123")))
125+
self.assertEqual(b"123", func(b"123"))
126+
self.assertEqual(b"123", func(c_char_p(b"123")))
127127
self.assertEqual(None, func(c_char_p(None)))
128128

129-
self.assertEqual("123", func(c_buffer("123")))
129+
self.assertEqual(b"123", func(c_buffer(b"123")))
130130
ca = c_char("a")
131-
self.assertEqual("a", func(pointer(ca))[0])
132-
self.assertEqual("a", func(byref(ca))[0])
131+
self.assertEqual(ord(b"a"), func(pointer(ca))[0])
132+
self.assertEqual(ord(b"a"), func(byref(ca))[0])
133133

134134
func(byref(c_int()))
135135
func(pointer(c_int()))

Lib/ctypes/test/test_random_things.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def test_TypeErrorDivisionError(self):
6969
out = self.capture_stderr(cb, "spam")
7070
self.assertEqual(out.splitlines()[-1],
7171
"TypeError: "
72-
"unsupported operand type(s) for /: 'int' and 'str'")
72+
"unsupported operand type(s) for /: 'int' and 'bytes'")
7373

7474
if __name__ == '__main__':
7575
unittest.main()

Lib/ctypes/test/test_returnfuncptrs.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ def test_with_prototype(self):
1212
get_strchr = dll.get_strchr
1313
get_strchr.restype = CFUNCTYPE(c_char_p, c_char_p, c_char)
1414
strchr = get_strchr()
15-
self.assertEqual(strchr("abcdef", "b"), "bcdef")
16-
self.assertEqual(strchr("abcdef", "x"), None)
17-
self.assertEqual(strchr("abcdef", 98), "bcdef")
18-
self.assertEqual(strchr("abcdef", 107), None)
19-
self.assertRaises(ArgumentError, strchr, "abcdef", 3.0)
20-
self.assertRaises(TypeError, strchr, "abcdef")
15+
self.assertEqual(strchr(b"abcdef", b"b"), b"bcdef")
16+
self.assertEqual(strchr(b"abcdef", b"x"), None)
17+
self.assertEqual(strchr(b"abcdef", 98), b"bcdef")
18+
self.assertEqual(strchr(b"abcdef", 107), None)
19+
self.assertRaises(ArgumentError, strchr, b"abcdef", 3.0)
20+
self.assertRaises(TypeError, strchr, b"abcdef")
2121

2222
def test_without_prototype(self):
2323
dll = CDLL(_ctypes_test.__file__)

0 commit comments

Comments
 (0)