[pypy-commit] pypy refactor-buffer-api: test/fix bufferstr_w behavior
bdkearns
noreply at buildbot.pypy.org
Thu Apr 24 03:56:23 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch: refactor-buffer-api
Changeset: r70912:e2178919af90
Date: 2014-04-23 21:50 -0400
http://bitbucket.org/pypy/pypy/changeset/e2178919af90/
Log: test/fix bufferstr_w behavior
diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -1408,7 +1408,11 @@
"expected a character buffer object")
def _getarg_error(self, expected, w_obj):
- raise oefmt(self.w_TypeError, "must be %s, not %T", expected, w_obj)
+ if self.is_none(w_obj):
+ name = "None"
+ else:
+ name = self.type(w_obj).getname(self)
+ raise oefmt(self.w_TypeError, "must be %s, not %s", expected, name)
@specialize.arg(1)
def getarg_w(self, code, w_obj):
@@ -1442,7 +1446,14 @@
except OperationError, e:
if not e.match(self, self.w_TypeError):
raise
- return self.readbuf_w(w_obj).as_str()
+ try:
+ buf = w_obj.buffer_w(self, 0)
+ except TypeError:
+ try:
+ buf = w_obj.readbuf_w(self)
+ except TypeError:
+ self._getarg_error("string or buffer", w_obj)
+ return buf.as_str()
def bufferchar_w(self, w_obj):
try:
diff --git a/pypy/module/_socket/test/test_sock_app.py b/pypy/module/_socket/test/test_sock_app.py
--- a/pypy/module/_socket/test/test_sock_app.py
+++ b/pypy/module/_socket/test/test_sock_app.py
@@ -545,8 +545,12 @@
s.connect(("www.python.org", 80))
except _socket.gaierror, ex:
skip("GAIError - probably no connection: %s" % str(ex.args))
+ exc = raises(TypeError, s.send, None)
+ assert str(exc.value) == "must be string or buffer, not None"
assert s.send(buffer('')) == 0
assert s.sendall(buffer('')) is None
+ assert s.send(memoryview('')) == 0
+ assert s.sendall(memoryview('')) is None
assert s.send(u'') == 0
assert s.sendall(u'') is None
raises(UnicodeEncodeError, s.send, u'\xe9')
More information about the pypy-commit
mailing list