[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