[pypy-svn] r52298 - in pypy/branch/buffer/pypy: interpreter interpreter/test module/_file/test module/_socket/test module/md5/test module/posix/test module/sha/test
arigo at codespeak.net
arigo at codespeak.net
Sat Mar 8 10:56:49 CET 2008
Author: arigo
Date: Sat Mar 8 10:56:47 2008
New Revision: 52298
Modified:
pypy/branch/buffer/pypy/interpreter/baseobjspace.py
pypy/branch/buffer/pypy/interpreter/test/test_buffer.py
pypy/branch/buffer/pypy/module/_file/test/test_file.py
pypy/branch/buffer/pypy/module/_socket/test/test_sock_app.py
pypy/branch/buffer/pypy/module/md5/test/test_md5.py
pypy/branch/buffer/pypy/module/posix/test/test_posix2.py
pypy/branch/buffer/pypy/module/sha/test/test_sha.py
Log:
A comment, and many tests for this comment :-)
Modified: pypy/branch/buffer/pypy/interpreter/baseobjspace.py
==============================================================================
--- pypy/branch/buffer/pypy/interpreter/baseobjspace.py (original)
+++ pypy/branch/buffer/pypy/interpreter/baseobjspace.py Sat Mar 8 10:56:47 2008
@@ -923,7 +923,14 @@
return self.interp_w(Buffer, w_buffer)
def bufferstr_w(self, w_obj):
- # directly returns an interp-level str
+ # Directly returns an interp-level str. Note that if w_obj is a
+ # unicode string, this is different from str_w(buffer(w_obj)):
+ # indeed, the latter returns a string with the raw bytes from
+ # the underlying unicode buffer, but bufferstr_w() just converts
+ # the unicode to an ascii string. This inconsistency is kind of
+ # needed because CPython has the same issue. (Well, it's
+ # unclear if there is any use at all for getting the bytes in
+ # the unicode buffer.)
try:
return self.str_w(w_obj)
except OperationError, e:
Modified: pypy/branch/buffer/pypy/interpreter/test/test_buffer.py
==============================================================================
--- pypy/branch/buffer/pypy/interpreter/test/test_buffer.py (original)
+++ pypy/branch/buffer/pypy/interpreter/test/test_buffer.py Sat Mar 8 10:56:47 2008
@@ -35,5 +35,13 @@
f.close()
assert data == 'hello world'
+ def test_unicode(self):
+ space = self.space
+ s = space.bufferstr_w(space.wrap(u'hello'))
+ assert type(s) is str
+ assert s == 'hello'
+ space.raises_w(space.w_UnicodeEncodeError,
+ space.bufferstr_w, space.wrap(u'\xe9'))
+
# Note: some app-level tests for buffer are in module/__builtin__/test/.
Modified: pypy/branch/buffer/pypy/module/_file/test/test_file.py
==============================================================================
--- pypy/branch/buffer/pypy/module/_file/test/test_file.py (original)
+++ pypy/branch/buffer/pypy/module/_file/test/test_file.py Sat Mar 8 10:56:47 2008
@@ -117,6 +117,7 @@
import os
f = self.file(self.temppath, "w")
f.write(u"hello\n")
+ raises(UnicodeEncodeError, f.write, u'\xe9')
f.close()
f = self.file(self.temppath, "r")
res = f.read()
Modified: pypy/branch/buffer/pypy/module/_socket/test/test_sock_app.py
==============================================================================
--- pypy/branch/buffer/pypy/module/_socket/test/test_sock_app.py (original)
+++ pypy/branch/buffer/pypy/module/_socket/test/test_sock_app.py Sat Mar 8 10:56:47 2008
@@ -394,8 +394,8 @@
assert s.getsockname() == s2.getsockname()
- def test_buffer(self):
- # Test that send/sendall/sendto accept a buffer as argument
+ def test_buffer_or_unicode(self):
+ # Test that send/sendall/sendto accept a buffer or a unicode as arg
import _socket, os
s = _socket.socket(_socket.AF_INET, _socket.SOCK_STREAM, 0)
# XXX temporarily we use codespeak to test, will have more robust tests in
@@ -404,6 +404,9 @@
s.connect(("codespeak.net", 80))
s.send(buffer(''))
s.sendall(buffer(''))
+ s.send(u'')
+ s.sendall(u'')
+ raises(UnicodeEncodeError, s.send, u'\xe9')
s.close()
s = _socket.socket(_socket.AF_INET, _socket.SOCK_DGRAM, 0)
s.sendto(buffer(''), ('localhost', 9)) # Send to discard port.
Modified: pypy/branch/buffer/pypy/module/md5/test/test_md5.py
==============================================================================
--- pypy/branch/buffer/pypy/module/md5/test/test_md5.py (original)
+++ pypy/branch/buffer/pypy/module/md5/test/test_md5.py Sat Mar 8 10:56:47 2008
@@ -88,3 +88,14 @@
d1 = md5.md5(buffer("abcde"))
d1.update(buffer("jkl"))
assert d1.hexdigest() == 'e570e7110ecef72fcb772a9c05d03373'
+
+
+ def test_unicode(self):
+ """
+ Test passing unicode strings.
+ """
+ md5 = self.md5
+ d1 = md5.md5(u"abcde")
+ d1.update(u"jkl")
+ assert d1.hexdigest() == 'e570e7110ecef72fcb772a9c05d03373'
+ raises(UnicodeEncodeError, d1.update, u'\xe9')
Modified: pypy/branch/buffer/pypy/module/posix/test/test_posix2.py
==============================================================================
--- pypy/branch/buffer/pypy/module/posix/test/test_posix2.py (original)
+++ pypy/branch/buffer/pypy/module/posix/test/test_posix2.py Sat Mar 8 10:56:47 2008
@@ -352,6 +352,17 @@
break
data += s
assert data == 'hello, world!\n'
+ os.close(fd)
+
+ def test_write_unicode(self):
+ os = self.posix
+ fd = os.open(self.path3, os.O_RDWR | os.O_CREAT, 0666)
+ os.write(fd, u'X')
+ raises(UnicodeEncodeError, os.write, fd, u'\xe9')
+ os.lseek(fd, 0, 0)
+ data = os.read(fd, 2)
+ assert data == 'X'
+ os.close(fd)
class AppTestEnvironment(object):
def setup_class(cls):
Modified: pypy/branch/buffer/pypy/module/sha/test/test_sha.py
==============================================================================
--- pypy/branch/buffer/pypy/module/sha/test/test_sha.py (original)
+++ pypy/branch/buffer/pypy/module/sha/test/test_sha.py Sat Mar 8 10:56:47 2008
@@ -92,3 +92,14 @@
d1 = sha.sha(buffer("abcde"))
d1.update(buffer("jkl"))
assert d1.hexdigest() == 'f5d13cf6341db9b0e299d7b9d562de9572b58e5d'
+
+
+ def test_unicode(self):
+ """
+ Test passing unicode strings.
+ """
+ sha = self.sha
+ d1 = sha.sha(u"abcde")
+ d1.update(u"jkl")
+ assert d1.hexdigest() == 'f5d13cf6341db9b0e299d7b9d562de9572b58e5d'
+ raises(UnicodeEncodeError, d1.update, u'\xe9')
More information about the Pypy-commit
mailing list