Adding test coverage (100%) to the debug middleware, and adding timeout
to the AJAX request for maximum win.
This commit is contained in:
@@ -163,7 +163,12 @@ debug_template_raw = '''<html>
|
||||
btn.disabled = false;
|
||||
}
|
||||
}
|
||||
request.send('/__pecan_initiate_pdb__');
|
||||
request.send('');
|
||||
|
||||
/* automatically timeout after 5 minutes, re-enabling the button */
|
||||
setTimeout(function() {
|
||||
request.abort();
|
||||
}, 5 * 60 * 1000);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
@@ -213,6 +218,10 @@ 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):
|
||||
self.app = app
|
||||
@@ -221,7 +230,7 @@ class PdbMiddleware(object):
|
||||
try:
|
||||
return self.app(environ, start_response)
|
||||
except:
|
||||
pdb.post_mortem()
|
||||
debug_request()
|
||||
|
||||
|
||||
class DebugMiddleware(object):
|
||||
|
||||
@@ -45,3 +45,21 @@ class TestDebugMiddleware(TestCase):
|
||||
app.get,
|
||||
'/'
|
||||
)
|
||||
|
||||
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)
|
||||
assert r.status_int == 400
|
||||
|
||||
r = self.app.get('/__pecan_initiate_pdb__', expect_errors=True)
|
||||
assert len(debugger) > 0
|
||||
|
||||
Reference in New Issue
Block a user