From ddf26197d1032214a54d1eafdcf6017425ec9116 Mon Sep 17 00:00:00 2001 From: Jonathan LaCour Date: Tue, 20 Mar 2012 11:38:15 -0700 Subject: [PATCH] Making the testing of the debugging middleware a bit more sane by avoiding monkeypatching. --- pecan/middleware/debug.py | 16 ++++++++-------- pecan/tests/middleware/test_debug.py | 15 +++++++++------ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/pecan/middleware/debug.py b/pecan/middleware/debug.py index eca8ed7..f4e545f 100644 --- a/pecan/middleware/debug.py +++ b/pecan/middleware/debug.py @@ -218,24 +218,22 @@ debug_template = Template(debug_template_raw) __debug_environ__ = None -def debug_request(): - pdb.post_mortem() # pragma: no cover - - class PdbMiddleware(object): - def __init__(self, app): + def __init__(self, app, debugger): self.app = app + self.debugger = debugger def __call__(self, environ, start_response): try: return self.app(environ, start_response) except: - debug_request() + self.debugger() class DebugMiddleware(object): - def __init__(self, app): + def __init__(self, app, debugger=pdb.post_mortem): self.app = app + self.debugger = debugger def __call__(self, environ, start_response): assert not environ['wsgi.multiprocess'], ( @@ -246,7 +244,9 @@ class DebugMiddleware(object): global __debug_environ__ debugging = environ['PATH_INFO'] == '/__pecan_initiate_pdb__' if debugging: - PdbMiddleware(self.app)(__debug_environ__, start_response) + PdbMiddleware(self.app, self.debugger)( + __debug_environ__, start_response + ) environ = __debug_environ__ try: diff --git a/pecan/tests/middleware/test_debug.py b/pecan/tests/middleware/test_debug.py index 76a9ba1..6312d64 100644 --- a/pecan/tests/middleware/test_debug.py +++ b/pecan/tests/middleware/test_debug.py @@ -47,19 +47,22 @@ class TestDebugMiddleware(TestCase): ) def test_middlware_allows_for_post_mortem_debugging(self): - # monkeypatch debug request - from pecan.middleware import debug - def patch_debugger(d): def _patched_debug_request(): d.append(True) return _patched_debug_request debugger = [] - debug.debug_request = patch_debugger(debugger) - r = self.app.get('/error', expect_errors=True) + app = TestApp( + DebugMiddleware( + self.app, + patch_debugger(debugger) + ) + ) + + r = app.get('/error', expect_errors=True) assert r.status_int == 400 - r = self.app.get('/__pecan_initiate_pdb__', expect_errors=True) + r = app.get('/__pecan_initiate_pdb__', expect_errors=True) assert len(debugger) > 0