Author: Amaury Forgeot d'Arc <amaur...@gmail.com>
Branch: py3k
Changeset: r50816:dce4b22308da
Date: 2011-12-22 00:20 +0100
http://bitbucket.org/pypy/pypy/changeset/dce4b22308da/

Log:    Fix almost all tests in module/_sre

diff --git a/lib_pypy/array.py b/lib_pypy/array.py
--- a/lib_pypy/array.py
+++ b/lib_pypy/array.py
@@ -106,6 +106,8 @@
         self.itemsize = calcsize(typecode)
         if isinstance(initializer, list):
             self.fromlist(initializer)
+        elif isinstance(initializer, bytes):
+            self.fromstring(initializer)
         elif isinstance(initializer, str) and self.typecode == "u":
             self.fromunicode(initializer)
         else:
@@ -138,8 +140,6 @@
         """Appends items from the string, interpreting it as an array of 
machine
         values, as if it had been read from a file using the fromfile()
         method."""
-        if isinstance(s, unicode):
-            s = str(s)
         self._frombuffer(s)
 
     def _frombuffer(self, s):
diff --git a/pypy/module/_sre/interp_sre.py b/pypy/module/_sre/interp_sre.py
--- a/pypy/module/_sre/interp_sre.py
+++ b/pypy/module/_sre/interp_sre.py
@@ -41,9 +41,9 @@
 class __extend__(rsre_core.StrMatchContext):
     __metaclass__ = extendabletype
     def _w_slice(self, space, start, end):
-        return space.wrap(self._string[start:end])
+        return space.wrapbytes(self._string[start:end])
     def _w_string(self, space):
-        return space.wrap(self._string)
+        return space.wrapbytes(self._string)
 
 class __extend__(rsre_core.UnicodeMatchContext):
     __metaclass__ = extendabletype
@@ -225,7 +225,7 @@
                 literal = u'\\' not in filter_as_unicode
             else:
                 try:
-                    filter_as_string = space.str_w(w_ptemplate)
+                    filter_as_string = space.bytes_w(w_ptemplate)
                 except OperationError, e:
                     if e.async(space):
                         raise
@@ -281,7 +281,7 @@
         if space.is_true(space.isinstance(w_string, space.w_unicode)):
             w_emptystr = space.wrap(u'')
         else:
-            w_emptystr = space.wrap('')
+            w_emptystr = space.wrapbytes('')
         w_item = space.call_method(w_emptystr, 'join',
                                    space.newlist(sublist_w))
         return w_item, n
diff --git a/pypy/module/_sre/test/test_app_sre.py 
b/pypy/module/_sre/test/test_app_sre.py
--- a/pypy/module/_sre/test/test_app_sre.py
+++ b/pypy/module/_sre/test/test_app_sre.py
@@ -7,7 +7,7 @@
 
 def init_globals_hack(space):
     space.appexec([space.wrap(autopath.this_dir)], """(this_dir):
-    import __builtin__ as b
+    import builtins as b
     import sys, os.path
     # Uh-oh, ugly hack
     sys.path.insert(0, this_dir)
@@ -38,7 +38,7 @@
 
     def test_creation_attributes(self):
         import re
-        pattern_string = "(b)l(?P<g>a)"
+        pattern_string = b"(b)l(?P<g>a)"
         p = re.compile(pattern_string, re.I | re.M)
         assert pattern_string == p.pattern
         assert re.I | re.M == p.flags
@@ -73,9 +73,9 @@
     def test_finditer(self):
         import re
         it = re.finditer("b(.)", "brabbel")
-        assert "br" == it.next().group(0)
-        assert "bb" == it.next().group(0)
-        raises(StopIteration, it.next)
+        assert "br" == next(it).group(0)
+        assert "bb" == next(it).group(0)
+        raises(StopIteration, next, it)
 
     def test_split(self):
         import re
@@ -177,25 +177,25 @@
         m = re.search("a(..)(?P<name>..)", "ab1bc")
         assert "b1bcbc" == m.expand(r"\1\g<name>\2")
 
-    def test_sub(self):
+    def test_sub_bytes(self):
         import re
-        assert "bbbbb" == re.sub("a", "b", "ababa")
-        assert ("bbbbb", 3) == re.subn("a", "b", "ababa")
-        assert "dddd" == re.sub("[abc]", "d", "abcd")
-        assert ("dddd", 3) == re.subn("[abc]", "d", "abcd")
-        assert "rbd\nbr\n" == re.sub("a(.)", r"b\1\n", "radar")
-        assert ("rbd\nbr\n", 2) == re.subn("a(.)", r"b\1\n", "radar")
-        assert ("bbbba", 2) == re.subn("a", "b", "ababa", 2)
+        assert b"bbbbb" == re.sub(b"a", b"b", b"ababa")
+        assert (b"bbbbb", 3) == re.subn(b"a", b"b", b"ababa")
+        assert b"dddd" == re.sub(b"[abc]", b"d", b"abcd")
+        assert (b"dddd", 3) == re.subn(b"[abc]", b"d", b"abcd")
+        assert b"rbd\nbr\n" == re.sub(b"a(.)", br"b\1\n", b"radar")
+        assert (b"rbd\nbr\n", 2) == re.subn(b"a(.)", br"b\1\n", b"radar")
+        assert (b"bbbba", 2) == re.subn(b"a", b"b", b"ababa", 2)
 
     def test_sub_unicode(self):
         import re
-        assert isinstance(re.sub(u"a", u"b", u""), unicode)
+        assert isinstance(re.sub(u"a", u"b", u""), str)
         # the input is returned unmodified if no substitution is performed,
         # which (if interpreted literally, as CPython does) gives the
         # following strangeish rules:
-        assert isinstance(re.sub(u"a", u"b", "diwoiioamoi"), unicode)
-        assert isinstance(re.sub(u"a", u"b", "diwoiiobmoi"), str)
-        assert isinstance(re.sub(u'x', 'y', 'x'), str)
+        assert isinstance(re.sub(u"a", u"b", "diwoiioamoi"), str)
+        assert isinstance(re.sub(u"a", u"b", b"diwoiiobmoi"), bytes)
+        assert isinstance(re.sub(u'x', b'y', b'x'), bytes)
 
     def test_sub_callable(self):
         import re
@@ -212,18 +212,10 @@
             return None
         assert "acd" == re.sub("b", call_me, "abcd")
 
-    def test_sub_callable_suddenly_unicode(self):
-        import re
-        def call_me(match):
-            if match.group() == 'A':
-                return unichr(0x3039)
-            return ''
-        assert (u"bb\u3039b", 2) == re.subn("[aA]", call_me, "babAb")
-
     def test_match_array(self):
         import re, array
-        a = array.array('c', 'hello')
-        m = re.match('hel+', a)
+        a = array.array('b', b'hello')
+        m = re.match(b'hel+', a)
         assert m.end() == 4
 
     def test_match_typeerror(self):
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to