mirror of https://github.com/mitsuhiko/flask.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.2 KiB
92 lines
2.2 KiB
7 years ago
|
import logging
|
||
|
import sys
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
from flask._compat import StringIO
|
||
|
from flask.logging import default_handler, has_level_handler, \
|
||
|
wsgi_errors_stream
|
||
|
|
||
|
|
||
|
@pytest.fixture(autouse=True)
|
||
|
def reset_logging(monkeypatch):
|
||
|
root_handlers = logging.root.handlers[:]
|
||
|
root_level = logging.root.level
|
||
|
|
||
|
logger = logging.getLogger('flask.app')
|
||
|
logger.handlers = []
|
||
|
logger.setLevel(logging.NOTSET)
|
||
|
|
||
|
yield
|
||
|
|
||
|
logging.root.handlers[:] = root_handlers
|
||
|
logging.root.setLevel(root_level)
|
||
|
|
||
|
logger.handlers = []
|
||
|
logger.setLevel(logging.NOTSET)
|
||
|
|
||
|
|
||
|
def test_logger(app):
|
||
|
assert app.logger.name == 'flask.app'
|
||
|
assert app.logger.level == logging.NOTSET
|
||
|
assert app.logger.handlers == [default_handler]
|
||
|
|
||
|
|
||
|
def test_logger_debug(app):
|
||
|
app.debug = True
|
||
|
assert app.logger.level == logging.DEBUG
|
||
|
assert app.logger.handlers == [default_handler]
|
||
|
|
||
|
|
||
|
def test_existing_handler(app):
|
||
|
logging.root.addHandler(logging.StreamHandler())
|
||
|
assert app.logger.level == logging.NOTSET
|
||
|
assert not app.logger.handlers
|
||
|
|
||
|
|
||
|
def test_wsgi_errors_stream(app, client):
|
||
|
@app.route('/')
|
||
|
def index():
|
||
|
app.logger.error('test')
|
||
|
return ''
|
||
|
|
||
|
stream = StringIO()
|
||
|
client.get('/', errors_stream=stream)
|
||
|
assert 'ERROR in test_logging: test' in stream.getvalue()
|
||
|
|
||
|
assert wsgi_errors_stream._get_current_object() is sys.stderr
|
||
|
|
||
|
with app.test_request_context(errors_stream=stream):
|
||
|
assert wsgi_errors_stream._get_current_object() is stream
|
||
|
|
||
|
|
||
|
def test_has_level_handler():
|
||
|
logger = logging.getLogger('flask.app')
|
||
|
assert not has_level_handler(logger)
|
||
|
|
||
|
handler = logging.StreamHandler()
|
||
|
logging.root.addHandler(handler)
|
||
|
assert has_level_handler(logger)
|
||
|
|
||
|
logger.propagate = False
|
||
|
assert not has_level_handler(logger)
|
||
|
logger.propagate = True
|
||
|
|
||
|
handler.setLevel(logging.ERROR)
|
||
|
assert not has_level_handler(logger)
|
||
|
|
||
|
|
||
|
def test_log_view_exception(app, client):
|
||
|
@app.route('/')
|
||
|
def index():
|
||
|
raise Exception('test')
|
||
|
|
||
|
app.testing = False
|
||
|
stream = StringIO()
|
||
|
rv = client.get('/', errors_stream=stream)
|
||
|
assert rv.status_code == 500
|
||
|
assert rv.data
|
||
|
err = stream.getvalue()
|
||
|
assert 'Exception on / [GET]' in err
|
||
|
assert 'Exception: test' in err
|