diff options
| author | Chris McDonough <chrism@agendaless.com> | 2010-09-12 12:45:07 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2010-09-12 12:45:07 +0000 |
| commit | 8f45bee662176e1b2a850a4a9fe25d26b03093a6 (patch) | |
| tree | 852a99ba184e1c1b24fb09197df2801372200541 /repoze/bfg/tests/test_router.py | |
| parent | 887a0c78919e6c3d1acfe1f9cc16a3aaf054a514 (diff) | |
| download | pyramid-8f45bee662176e1b2a850a4a9fe25d26b03093a6.tar.gz pyramid-8f45bee662176e1b2a850a4a9fe25d26b03093a6.tar.bz2 pyramid-8f45bee662176e1b2a850a4a9fe25d26b03093a6.zip | |
- The BFG router now emits an additional event unconditionally at the
end of request processing:
``repoze.bfg.interfaces.IFinishedRequest``. This event is meant to
be used when it is necessary to perform unconditional cleanup after
request processing. See the ``repoze.bfg.events.FinishedRequest``
class documentation for more information.
- The ``repoze.bfg.interfaces.IWSGIApplicationCreatedEvent`` event
interface was renamed to
``repoze.bfg.interfaces.IApplicationCreated``. Likewise, the
``repoze.bfg.events.WSGIApplicationCreatedEvent`` class was renamed
to ``repoze.bfg.events.ApplicationCreated``. The older aliases will
continue to work indefinitely.
- The ``repoze.bfg.interfaces.IAfterTraversal`` event interface was
renamed to ``repoze.bfg.interfaces.IContextFound``. Likewise, the
``repoze.bfg.events.AfterTraveral`` class was renamed to
``repoze.bfg.events.ContextFound``. The older aliases will continue
to work indefinitely.
Diffstat (limited to 'repoze/bfg/tests/test_router.py')
| -rw-r--r-- | repoze/bfg/tests/test_router.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py index c243d739e..fafe88d4a 100644 --- a/repoze/bfg/tests/test_router.py +++ b/repoze/bfg/tests/test_router.py @@ -126,6 +126,21 @@ class TestRouter(unittest.TestCase): router = self._makeOne() self.assertEqual(router.request_factory, DummyRequestFactory) + def test_call_request_factory_raises_finished_request_catches(self): + from repoze.bfg.interfaces import IFinishedRequest + finished_events = self._registerEventListener(IFinishedRequest) + environ = self._makeEnviron() + logger = self._registerLogger() + router = self._makeOne() + def dummy_request_factory(environ): + raise NotImplementedError + router.request_factory = dummy_request_factory + start_response = DummyStartResponse() + exc_raised(NotImplementedError, router, environ, start_response) + self.assertEqual(len(logger.messages), 0) + self.assertEqual(len(finished_events), 1) + self.assertEqual(finished_events[0].request, None) + def test_call_traverser_default(self): from repoze.bfg.exceptions import NotFound environ = self._makeEnviron() @@ -399,7 +414,8 @@ class TestRouter(unittest.TestCase): def test_call_eventsends(self): from repoze.bfg.interfaces import INewRequest from repoze.bfg.interfaces import INewResponse - from repoze.bfg.interfaces import IAfterTraversal + from repoze.bfg.interfaces import IContextFound + from repoze.bfg.interfaces import IFinishedRequest from repoze.bfg.interfaces import IViewClassifier context = DummyContext() self._registerTraverserFactory(context) @@ -409,8 +425,9 @@ class TestRouter(unittest.TestCase): environ = self._makeEnviron() self._registerView(view, '', IViewClassifier, None, None) request_events = self._registerEventListener(INewRequest) - aftertraversal_events = self._registerEventListener(IAfterTraversal) + aftertraversal_events = self._registerEventListener(IContextFound) response_events = self._registerEventListener(INewResponse) + finished_events = self._registerEventListener(IFinishedRequest) router = self._makeOne() start_response = DummyStartResponse() result = router(environ, start_response) @@ -420,6 +437,8 @@ class TestRouter(unittest.TestCase): self.assertEqual(aftertraversal_events[0].request.environ, environ) self.assertEqual(len(response_events), 1) self.assertEqual(response_events[0].response, response) + self.assertEqual(len(finished_events), 1) + self.assertEqual(finished_events[0].request.environ, environ) self.assertEqual(result, response.app_iter) def test_call_pushes_and_pops_threadlocal_manager(self): |
