diff options
| author | Michael Merickel <michael@merickel.org> | 2013-03-19 10:10:10 -0700 |
|---|---|---|
| committer | Michael Merickel <michael@merickel.org> | 2013-03-19 10:10:10 -0700 |
| commit | 69c3ad9896ae3ef82fa458629bc2213fd7b8de84 (patch) | |
| tree | 3e11912d0722e045ba5674d90b0e615c48222200 | |
| parent | c7bff5045ad928166695fb6bb8154443387e4184 (diff) | |
| download | pyramid-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.py | 26 |
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 |
