diff options
| author | Theron Luhn <theron@luhn.com> | 2021-01-15 10:02:08 -0800 |
|---|---|---|
| committer | Theron Luhn <theron@luhn.com> | 2021-01-15 10:02:08 -0800 |
| commit | 8ac39fbf5058deb70903977072874838be156717 (patch) | |
| tree | 8f2139590146c08136976b7db60de60d0c507ef2 | |
| parent | 837358ee6be552fd2f990d1ed8d6ea9e1c98d583 (diff) | |
| download | pyramid-8ac39fbf5058deb70903977072874838be156717.tar.gz pyramid-8ac39fbf5058deb70903977072874838be156717.tar.bz2 pyramid-8ac39fbf5058deb70903977072874838be156717.zip | |
Fix tests.
| -rw-r--r-- | src/pyramid/router.py | 8 | ||||
| -rw-r--r-- | 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']) |
