Adding test coverage (100%) to the debug middleware, and adding timeout

to the AJAX request for maximum win.
This commit is contained in:
Jonathan LaCour
2012-03-20 10:32:33 -07:00
parent 9a91cb5695
commit ac356ee09a
2 changed files with 29 additions and 2 deletions

View File

@@ -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):

View File

@@ -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