[pypy-commit] pypy py3k: hg merge default
Manuel Jacob
noreply at buildbot.pypy.org
Mon Mar 4 11:51:57 CET 2013
Author: Manuel Jacob
Branch: py3k
Changeset: r62005:ed5327d22e7c
Date: 2013-03-04 11:51 +0100
http://bitbucket.org/pypy/pypy/changeset/ed5327d22e7c/
Log: hg merge default
diff --git a/dotviewer/msgstruct.py b/dotviewer/msgstruct.py
--- a/dotviewer/msgstruct.py
+++ b/dotviewer/msgstruct.py
@@ -1,5 +1,6 @@
import sys, os
from struct import pack, unpack, calcsize
+from strunicode import tryencode
MAGIC = -0x3b83728b
@@ -24,15 +25,10 @@
long_max = 2147483647
-def _encodeme(x):
- if type(x) is unicode:
- x = x.encode('utf-8')
- return x
-
def message(tp, *values):
#print >> sys.stderr, tp, values
typecodes = ['']
- values = map(_encodeme, values)
+ values = map(tryencode, values)
for v in values:
if type(v) is str:
typecodes.append('%ds' % len(v))
diff --git a/dotviewer/strunicode.py b/dotviewer/strunicode.py
--- a/dotviewer/strunicode.py
+++ b/dotviewer/strunicode.py
@@ -1,9 +1,17 @@
RAW_ENCODING = "utf-8"
+ENCODING_ERROR_HANDLING = "replace"
def forceunicode(name):
- return name if isinstance(name, unicode) else name.decode(RAW_ENCODING)
+ """ returns `name` as unicode, even if it wasn't before """
+ return name if isinstance(name, unicode) else name.decode(RAW_ENCODING, ENCODING_ERROR_HANDLING)
def forcestr(name):
- return name if isinstance(name, str) else name.encode(RAW_ENCODING)
+ """ returns `name` as string, even if it wasn't before """
+ return name if isinstance(name, str) else name.encode(RAW_ENCODING, ENCODING_ERROR_HANDLING)
+
+
+def tryencode(name):
+ """ returns `name` as encoded string if it was unicode before """
+ return name.encode(RAW_ENCODING, ENCODING_ERROR_HANDLING) if isinstance(name, unicode) else name
diff --git a/dotviewer/test/test_interactive_unicode.py b/dotviewer/test/test_interactive_unicode.py
--- a/dotviewer/test/test_interactive_unicode.py
+++ b/dotviewer/test/test_interactive_unicode.py
@@ -4,7 +4,7 @@
import py
import sys, os, signal, thread, time, codecs
from dotviewer.conftest import option
-from dotviewer.drawgraph import RAW_ENCODING
+from dotviewer.strunicode import RAW_ENCODING
SOURCE1 = u"""digraph G{
λ -> b
diff --git a/dotviewer/test/test_unicode_util.py b/dotviewer/test/test_unicode_util.py
--- a/dotviewer/test/test_unicode_util.py
+++ b/dotviewer/test/test_unicode_util.py
@@ -3,7 +3,7 @@
#
import py
import codecs
-from dotviewer.drawgraph import RAW_ENCODING, forcestr, forceunicode
+from dotviewer.strunicode import RAW_ENCODING, forcestr, forceunicode, tryencode
SOURCE1 = u"""digraph G{
λ -> b
@@ -18,7 +18,7 @@
def test_idempotent(self):
x = u"a"
assert forceunicode(forcestr(x)) == x
-
+
x = u"λ"
assert forceunicode(forcestr(x)) == x
@@ -40,7 +40,7 @@
x_u = forceunicode(x_e)
assert forceunicode(x_u) == x_u
- def test_file(self):
+ def test_file(self):
udir = py.path.local.make_numbered_dir(prefix='usession-dot-', keep=3)
full_filename = str(udir.join(FILENAME))
f = codecs.open(full_filename, 'wb', RAW_ENCODING)
@@ -55,3 +55,19 @@
f3.close()
result = (c == SOURCE1)
assert result
+
+ def test_only_unicode_encode(self):
+ sut = [1, u"a", "miau", u"λ"]
+ expected = [int, str, str, str ]
+
+ results = map(tryencode, sut)
+ for result, expected_type in zip(results, expected):
+ assert isinstance(result, expected_type)
+
+ def test_forceunicode_should_not_fail(self):
+ garbage = "\xef\xff\xbb\xbf\xce\xbb\xff\xff" # garbage with a lambda
+ result = forceunicode(garbage) # should not raise
+
+ def test_forcestr_should_not_fail(self):
+ garbage = u"\xef\xff\xbb\xbf\xce\xbb\xff\xff" # garbage
+ result = forcestr(garbage) # should not raise
diff --git a/pypy/module/select/test/test_kqueue.py b/pypy/module/select/test/test_kqueue.py
--- a/pypy/module/select/test/test_kqueue.py
+++ b/pypy/module/select/test/test_kqueue.py
@@ -101,10 +101,9 @@
try:
client.connect(("127.0.0.1", server_socket.getsockname()[1]))
except socket.error as e:
- if 'bsd' in sys.platform:
- assert e.args[0] == errno.ENOENT
- else:
- assert e.args[0] == errno.EINPROGRESS
+ assert e.args[0] == errno.EINPROGRESS
+ else:
+ assert False, "EINPROGRESS not raised"
server, addr = server_socket.accept()
if sys.platform.startswith("darwin"):
diff --git a/pypy/module/select/test/test_select.py b/pypy/module/select/test/test_select.py
--- a/pypy/module/select/test/test_select.py
+++ b/pypy/module/select/test/test_select.py
@@ -193,29 +193,12 @@
readend, writeend = self.getpair()
readend.close()
try:
- iwtd, owtd, ewtd = select.select([], [writeend], [])
- assert owtd == [writeend]
- assert iwtd == ewtd == []
+ iwtd, owtd, ewtd = select.select([writeend], [writeend], [writeend])
+ assert iwtd == owtd == [writeend]
+ assert ewtd == []
finally:
writeend.close()
- def test_select_bug(self):
- import select, os
- if not hasattr(os, 'fork'):
- skip("no fork() on this platform")
- read, write = os.pipe()
- pid = os.fork()
- if pid == 0:
- os._exit(0)
- else:
- os.close(read)
- os.waitpid(pid, 0)
- res = select.select([write], [write], [write])
- assert len(res[0]) == 1
- assert len(res[1]) == 1
- assert len(res[2]) == 0
- assert res[0][0] == res[1][0]
-
def test_poll(self):
import select
if not hasattr(select, 'poll'):
diff --git a/pypy/module/test_lib_pypy/test_os_wait.py b/pypy/module/test_lib_pypy/test_os_wait.py
--- a/pypy/module/test_lib_pypy/test_os_wait.py
+++ b/pypy/module/test_lib_pypy/test_os_wait.py
@@ -4,9 +4,8 @@
import os
-from lib_pypy._pypy_wait import wait3, wait4
-
if hasattr(os, 'wait3'):
+ from lib_pypy._pypy_wait import wait3
def test_os_wait3():
exit_status = 0x33
@@ -25,6 +24,7 @@
assert isinstance(rusage.ru_maxrss, int)
if hasattr(os, 'wait4'):
+ from lib_pypy._pypy_wait import wait4
def test_os_wait4():
exit_status = 0x33
diff --git a/rpython/rlib/rweakref.py b/rpython/rlib/rweakref.py
--- a/rpython/rlib/rweakref.py
+++ b/rpython/rlib/rweakref.py
@@ -95,7 +95,7 @@
def rtyper_makerepr(self, rtyper):
from rpython.rlib import _rweakvaldict
return _rweakvaldict.WeakValueDictRepr(rtyper,
- rtyper.makerepr(self.s_key))
+ rtyper.getrepr(self.s_key))
def rtyper_makekey_ex(self, rtyper):
return self.__class__,
diff --git a/rpython/rlib/test/test_rsocket.py b/rpython/rlib/test/test_rsocket.py
--- a/rpython/rlib/test/test_rsocket.py
+++ b/rpython/rlib/test/test_rsocket.py
@@ -367,7 +367,6 @@
if sys.platform == "win32":
skip("dup does not work on Windows")
s = RSocket(AF_INET, SOCK_STREAM)
- s.setsockopt_int(SOL_SOCKET, SO_REUSEADDR, 1)
s.bind(INETAddress('localhost', 50007))
s2 = s.dup()
assert s.fd != s2.fd
@@ -377,10 +376,10 @@
# rsocket.dup() duplicates fd, it also works on Windows
# (but only on socket handles!)
s = RSocket(AF_INET, SOCK_STREAM)
- s.setsockopt_int(SOL_SOCKET, SO_REUSEADDR, 1)
s.bind(INETAddress('localhost', 50007))
- fd2 = dup(s.fd)
- assert s.fd != fd2
+ s2 = RSocket(fd=dup(s.fd))
+ assert s.fd != s2.fd
+ assert s.getsockname().eq(s2.getsockname())
def test_inet_aton():
assert inet_aton('1.2.3.4') == '\x01\x02\x03\x04'
@@ -444,7 +443,6 @@
def setup_method(self, method):
self.serv = RSocket(AF_INET, SOCK_STREAM)
- self.serv.setsockopt_int(SOL_SOCKET, SO_REUSEADDR, 1)
self.serv.bind(INETAddress(self.HOST, self.PORT))
self.serv.listen(1)
diff --git a/rpython/rtyper/rint.py b/rpython/rtyper/rint.py
--- a/rpython/rtyper/rint.py
+++ b/rpython/rtyper/rint.py
@@ -232,7 +232,7 @@
if not s_int1.nonneg or not s_int2.nonneg:
raise TyperError("comparing a signed and an unsigned number")
- repr = hop.rtyper.makerepr(annmodel.unionof(s_int1, s_int2)).as_int
+ repr = hop.rtyper.getrepr(annmodel.unionof(s_int1, s_int2)).as_int
vlist = hop.inputargs(repr, repr)
hop.exception_is_here()
return hop.genop(repr.opprefix+func, vlist, resulttype=Bool)
diff --git a/rpython/rtyper/rtyper.py b/rpython/rtyper/rtyper.py
--- a/rpython/rtyper/rtyper.py
+++ b/rpython/rtyper/rtyper.py
@@ -162,7 +162,7 @@
def makekey(self, s_obj):
return pair(self.type_system, s_obj).rtyper_makekey(self)
- def makerepr(self, s_obj):
+ def _makerepr(self, s_obj):
return pair(self.type_system, s_obj).rtyper_makerepr(self)
def getrepr(self, s_obj):
@@ -173,7 +173,7 @@
result = self.reprs[key]
except KeyError:
self.reprs[key] = None
- result = self.makerepr(s_obj)
+ result = self._makerepr(s_obj)
assert not isinstance(result.lowleveltype, ContainerType), (
"missing a Ptr in the type specification "
"of %s:\n%r" % (s_obj, result.lowleveltype))
More information about the pypy-commit
mailing list