Author: Amaury Forgeot d'Arc <amaur...@gmail.com>
Branch: py3k
Changeset: r60635:5f3eacb6f86c
Date: 2013-01-28 22:46 +0100
http://bitbucket.org/pypy/pypy/changeset/5f3eacb6f86c/

Log:    hg merge default

diff --git a/rpython/annotator/annrpython.py b/rpython/annotator/annrpython.py
--- a/rpython/annotator/annrpython.py
+++ b/rpython/annotator/annrpython.py
@@ -113,6 +113,9 @@
         if policy is None:
             from rpython.annotator.policy import AnnotatorPolicy
             policy = AnnotatorPolicy()
+            # XXX hack
+            annmodel.TLS.check_str_without_nul = (
+                self.translator.config.translation.check_str_without_nul)
         graph, inputcells = self.get_call_parameters(function, args_s, policy)
         self.build_graph_types(graph, inputcells, complete_now=False)
         self.complete_helpers(policy)
diff --git a/rpython/rlib/test/test_jit.py b/rpython/rlib/test/test_jit.py
--- a/rpython/rlib/test/test_jit.py
+++ b/rpython/rlib/test/test_jit.py
@@ -35,8 +35,8 @@
     assert driver.reds == ['a', 'b']
     assert driver.numreds == 2
 
-@py.test.mark.xfail(reason="@inline off: see skipped failures in 
test_warmspot.")
 def test_jitdriver_inline():
+    py.test.skip("@inline off: see skipped failures in test_warmspot.")
     driver = JitDriver(greens=[], reds='auto')
     calls = []
     def foo(a, b):
@@ -55,8 +55,8 @@
         ('bar', 40, 2),
         ]
 
-@py.test.mark.xfail(reason="@inline off: see skipped failures in 
test_warmspot.")
 def test_jitdriver_clone():
+    py.test.skip("@inline off: see skipped failures in test_warmspot.")
     def bar(): pass
     def foo(): pass
     driver = JitDriver(greens=[], reds=[])
diff --git a/rpython/rlib/test/test_rposix.py b/rpython/rlib/test/test_rposix.py
--- a/rpython/rlib/test/test_rposix.py
+++ b/rpython/rlib/test/test_rposix.py
@@ -141,3 +141,10 @@
         assert rposix.is_valid_fd(fd) == 1
         fid.close()
         assert rposix.is_valid_fd(fd) == 0
+
+    def test_putenv(self):
+        def f():
+            rposix.putenv(self.path, self.path)
+            rposix.unsetenv(self.path)
+
+        interpret(f, []) # does not crash
diff --git a/rpython/rlib/test/test_signature.py 
b/rpython/rlib/test/test_signature.py
--- a/rpython/rlib/test/test_signature.py
+++ b/rpython/rlib/test/test_signature.py
@@ -9,6 +9,7 @@
 
 def annotate_at(f, policy=None):
     t = TranslationContext()
+    t.config.translation.check_str_without_nul = True
     a = t.buildannotator(policy=policy)
     a.annotate_helper(f, [model.s_ImpossibleValue]*f.func_code.co_argcount, 
policy=policy)
     return a
@@ -112,6 +113,12 @@
         return len(u)
     assert getsig(f) == [model.SomeUnicodeString(), model.SomeInteger()]
 
+def test_str0():
+    @signature(types.unicode0(), returns=types.str0())
+    def f(u):
+        return 'str'
+    assert getsig(f) == [model.SomeUnicodeString(no_nul=True),
+                         model.SomeString(no_nul=True)]
 
 def test_ptr():
     policy = LowLevelAnnotatorPolicy()
diff --git a/rpython/rtyper/rstr.py b/rpython/rtyper/rstr.py
--- a/rpython/rtyper/rstr.py
+++ b/rpython/rtyper/rstr.py
@@ -88,7 +88,6 @@
                                           startingpos, endingpos):
         raise UnicodeEncodeError(encoding, u, startingpos, endingpos, msg)
     
-
 class __extend__(annmodel.SomeString):
     def rtyper_makerepr(self, rtyper):
         return rtyper.type_system.rstr.string_repr
diff --git a/rpython/rtyper/test/test_runicode.py 
b/rpython/rtyper/test/test_runicode.py
--- a/rpython/rtyper/test/test_runicode.py
+++ b/rpython/rtyper/test/test_runicode.py
@@ -106,6 +106,12 @@
 
         assert self.ll_to_string(self.interpret(f, [38])) == f(38)
 
+        def g(n):
+            x = u'\ud800' + unichr(n)
+            return x.encode('utf-8')
+
+        self.interpret_raises(UnicodeEncodeError, g, [38])
+
     def test_utf_8_encoding_annotation(self):
         from rpython.rlib.runicode import unicode_encode_utf_8
         def errorhandler(errors, encoding, msg, u,
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to