From 7936210eb8f6da693fcab9ed04dfed277874eeb0 Mon Sep 17 00:00:00 2001
From: Michael Merickel <michael@merickel.org>
Date: Wed, 03 May 2017 04:43:49 +0200
Subject: [PATCH] clean request.exception if the excview fails to handle the error

---
 pyramid/tests/test_tweens.py |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/pyramid/tests/test_tweens.py b/pyramid/tests/test_tweens.py
index c8eada3..2e74ad7 100644
--- a/pyramid/tests/test_tweens.py
+++ b/pyramid/tests/test_tweens.py
@@ -22,6 +22,8 @@
         request = DummyRequest()
         result = tween(request)
         self.assertTrue(result is dummy_response)
+        self.assertIsNone(request.exception)
+        self.assertIsNone(request.exc_info)
 
     def test_it_catches_notfound(self):
         from pyramid.request import Request
@@ -31,8 +33,11 @@
             raise HTTPNotFound
         tween = self._makeOne(handler)
         request = Request.blank('/')
+        request.registry = self.config.registry
         result = tween(request)
         self.assertEqual(result.status, '404 Not Found')
+        self.assertIsInstance(request.exception, HTTPNotFound)
+        self.assertEqual(request.exception, request.exc_info[1])
 
     def test_it_catches_with_predicate(self):
         from pyramid.request import Request
@@ -44,8 +49,11 @@
             raise ValueError
         tween = self._makeOne(handler)
         request = Request.blank('/')
+        request.registry = self.config.registry
         result = tween(request)
         self.assertTrue(b'foo' in result.body)
+        self.assertIsInstance(request.exception, ValueError)
+        self.assertEqual(request.exception, request.exc_info[1])
 
     def test_it_reraises_on_mismatch(self):
         from pyramid.request import Request
@@ -55,8 +63,11 @@
             raise ValueError
         tween = self._makeOne(handler)
         request = Request.blank('/')
+        request.registry = self.config.registry
         request.method = 'POST'
         self.assertRaises(ValueError, lambda: tween(request))
+        self.assertIsNone(request.exception)
+        self.assertIsNone(request.exc_info)
 
     def test_it_reraises_on_no_match(self):
         from pyramid.request import Request
@@ -64,10 +75,14 @@
             raise ValueError
         tween = self._makeOne(handler)
         request = Request.blank('/')
+        request.registry = self.config.registry
         self.assertRaises(ValueError, lambda: tween(request))
+        self.assertIsNone(request.exception)
+        self.assertIsNone(request.exc_info)
 
 class DummyRequest:
-    pass
+    exception = None
+    exc_info = None
 
 class DummyResponse:
     pass

--
Gitblit v1.9.3