Author: Amaury Forgeot d'Arc <amaur...@gmail.com>
Branch: py3.3
Changeset: r82026:9067ded8c01d
Date: 2016-02-01 09:39 +0100
http://bitbucket.org/pypy/pypy/changeset/9067ded8c01d/

Log:    Add a more complex test for e.__context__, directly from CPython.

diff --git a/pypy/interpreter/error.py b/pypy/interpreter/error.py
--- a/pypy/interpreter/error.py
+++ b/pypy/interpreter/error.py
@@ -350,8 +350,9 @@
             self.normalize_exception(space)
             w_value = self.get_w_value(space)
             w_last = last_exception.get_w_value(space)
-            w_context = setup_context(space, w_value, w_last, lazy=True)
-            space.setattr(w_value, space.wrap('__context__'), w_context)
+            if not space.is_w(w_value, w_last):
+                w_context = setup_context(space, w_value, w_last, lazy=True)
+                space.setattr(w_value, space.wrap('__context__'), w_context)
 
 
 def setup_context(space, w_exc, w_last, lazy=False):
diff --git a/pypy/interpreter/test/test_raise.py 
b/pypy/interpreter/test/test_raise.py
--- a/pypy/interpreter/test/test_raise.py
+++ b/pypy/interpreter/test/test_raise.py
@@ -408,6 +408,25 @@
         except:
             func()
 
+    def testCauseSyntax(self):
+        """
+        try:
+            try:
+                try:
+                    raise TypeError
+                except Exception:
+                    raise ValueError from None
+            except ValueError as exc:
+                assert exc.__cause__ is None
+                assert exc.__suppress_context__ is True
+                exc.__suppress_context__ = False
+                raise exc
+        except ValueError as exc:
+            e = exc
+        assert e.__cause__ is None
+        assert e.__suppress_context__ is False
+        assert isinstance(e.__context__, TypeError)
+        """
 
 class AppTestTraceback:
 
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to