From 8f45bee662176e1b2a850a4a9fe25d26b03093a6 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sun, 12 Sep 2010 12:45:07 +0000 Subject: - 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. --- repoze/bfg/tests/test_router.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'repoze/bfg/tests/test_router.py') 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): -- cgit v1.2.3