summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2013-03-19 10:10:10 -0700
committerMichael Merickel <michael@merickel.org>2013-03-19 10:10:10 -0700
commit69c3ad9896ae3ef82fa458629bc2213fd7b8de84 (patch)
tree3e11912d0722e045ba5674d90b0e615c48222200
parentc7bff5045ad928166695fb6bb8154443387e4184 (diff)
downloadpyramid-69c3ad9896ae3ef82fa458629bc2213fd7b8de84.tar.gz
pyramid-69c3ad9896ae3ef82fa458629bc2213fd7b8de84.tar.bz2
pyramid-69c3ad9896ae3ef82fa458629bc2213fd7b8de84.zip
add test to ensure unrelated views are not invoked after PredicateMismatch
-rw-r--r--pyramid/tests/test_router.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/pyramid/tests/test_router.py b/pyramid/tests/test_router.py
index 32e74a3b3..432959147 100644
--- a/pyramid/tests/test_router.py
+++ b/pyramid/tests/test_router.py
@@ -1236,6 +1236,32 @@ class TestRouter(unittest.TestCase):
app_iter = router(environ, start_response)
self.assertEqual(app_iter, [b'abc'])
+ def test_call_view_predicate_mismatch_doesnt_find_unrelated_views(self):
+ from pyramid.exceptions import PredicateMismatch
+ from pyramid.interfaces import IViewClassifier
+ from pyramid.interfaces import IRequest
+ from zope.interface import Interface, implementer
+ class IContext(Interface):
+ pass
+ class IOtherContext(Interface):
+ pass
+ @implementer(IContext)
+ class DummyContext:
+ pass
+ context = DummyContext()
+ self._registerTraverserFactory(context)
+ view = DummyView(DummyResponse(), raise_exception=PredicateMismatch)
+ self._registerView(view, '', IViewClassifier, IRequest,
+ DummyContext)
+ please_dont_call_me_view = DummyView('abc')
+ self._registerView(self.config.derive_view(please_dont_call_me_view),
+ '', IViewClassifier, IRequest, IOtherContext)
+ router = self._makeOne()
+ environ = self._makeEnviron()
+ router = self._makeOne()
+ start_response = DummyStartResponse()
+ self.assertRaises(PredicateMismatch, router, environ, start_response)
+
class DummyPredicate(object):
def __call__(self, info, request):
return True