from fixture import * from paste.errormiddleware import ErrorMiddleware from paste import lint def do_request(app, expect_status=500): res = fake_request(ErrorMiddleware(lint.middleware(app)), **{'paste.config': {'debug': True}}) assert res.status_int == expect_status return res def bad_app(): "No argument list!" return None def start_response_app(environ, start_response): "raise error before start_response" raise ValueError("hi") def after_start_response_app(environ, start_response): start_response("200 OK", [('Content-type', 'text/plain')]) raise ValueError('error2') def iter_app(environ, start_response): start_response("200 OK", [('Content-type', 'text/plain')]) return yielder(['this', ' is ', ' a', None]) def yielder(args): for arg in args: if arg is None: raise ValueError("None raises error") yield arg def test_makes_exception(): res = do_request(bad_app) print res assert 'start_response_app' in res def test_after_start(): res = do_request(after_start_response_app, 200) print res assert 'ValueError: error2' in res assert 'line 21' in res def test_iter_app(): res = do_request(iter_app, 200) print res assert 'None raises error' in res assert 'yielder' in res