From 8ac39fbf5058deb70903977072874838be156717 Mon Sep 17 00:00:00 2001 From: Theron Luhn Date: Fri, 15 Jan 2021 10:02:08 -0800 Subject: Fix tests. --- src/pyramid/router.py | 8 ++++++-- tests/test_router.py | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/pyramid/router.py b/src/pyramid/router.py index 644a6a395..fb3e5fca6 100644 --- a/src/pyramid/router.py +++ b/src/pyramid/router.py @@ -252,8 +252,12 @@ class Router: return response finally: - if request.finished_callbacks: - request._process_finished_callbacks() + self.finish_request(request) + + def finish_request(self, request): + if request.finished_callbacks: + request._process_finished_callbacks() + request.__dict__.pop('context', None) def __call__(self, environ, start_response): """ diff --git a/tests/test_router.py b/tests/test_router.py index 0f00ea531..17eb5a1c6 100644 --- a/tests/test_router.py +++ b/tests/test_router.py @@ -124,6 +124,19 @@ class TestRouter(unittest.TestCase): klass = self._getTargetClass() return klass(self.registry) + def _mockFinishRequest(self, router): + """ + Mock :meth:`pyramid.router.Router.finish_request` to be a no-op. This + prevents :prop:`pyramid.request.Request.context` from being removed, so + we can write assertions against it. + + """ + + def mock_finish_request(request): + pass + + router.finish_request = mock_finish_request + def _makeEnviron(self, **extras): environ = { 'wsgi.url_scheme': 'http', @@ -421,6 +434,7 @@ class TestRouter(unittest.TestCase): ) self._registerRootFactory(context) router = self._makeOne() + self._mockFinishRequest(router) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) @@ -448,6 +462,7 @@ class TestRouter(unittest.TestCase): environ = self._makeEnviron() self._registerView(view, 'foo', IViewClassifier, None, None) router = self._makeOne() + self._mockFinishRequest(router) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) @@ -477,6 +492,7 @@ class TestRouter(unittest.TestCase): environ = self._makeEnviron() self._registerView(view, '', IViewClassifier, IRequest, IContext) router = self._makeOne() + self._mockFinishRequest(router) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) @@ -704,6 +720,7 @@ class TestRouter(unittest.TestCase): context_found_events = self._registerEventListener(IContextFound) response_events = self._registerEventListener(INewResponse) router = self._makeOne() + self._mockFinishRequest(router) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(len(request_events), 1) @@ -767,6 +784,7 @@ class TestRouter(unittest.TestCase): self._registerView(view, '', IViewClassifier, None, None) self._registerRootFactory(context) router = self._makeOne() + self._mockFinishRequest(router) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) @@ -841,6 +859,7 @@ class TestRouter(unittest.TestCase): self._registerView(view, '', IViewClassifier, None, None) self._registerRootFactory(context) router = self._makeOne() + self._mockFinishRequest(router) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) -- cgit v1.2.3