mirror of
https://github.com/pallets-eco/flask-debugtoolbar.git
synced 2026-01-04 12:39:33 -06:00
In Python 2, when repr() returns bytes, replace any non-ascii bytes with the unicode ? character to ensure that the result is printable. Fixes #66
42 lines
1.0 KiB
Python
42 lines
1.0 KiB
Python
import sys
|
|
|
|
import pytest
|
|
|
|
from flask_debugtoolbar import _printable
|
|
|
|
|
|
def load_app(name):
|
|
app = __import__(name).app
|
|
app.config['TESTING'] = True
|
|
return app.test_client()
|
|
|
|
|
|
def test_basic_app():
|
|
app = load_app('basic_app')
|
|
index = app.get('/')
|
|
assert index.status_code == 200
|
|
assert b'<div id="flDebug"' in index.data
|
|
|
|
|
|
@pytest.mark.skipif(sys.version_info >= (3,),
|
|
reason='test only applies to Python 2')
|
|
def test_printable_unicode():
|
|
class UnicodeRepr(object):
|
|
def __repr__(self):
|
|
return u'\uffff'
|
|
|
|
printable = _printable(UnicodeRepr())
|
|
assert "raised UnicodeEncodeError: 'ascii' codec" in printable
|
|
|
|
|
|
@pytest.mark.skipif(sys.version_info >= (3,),
|
|
reason='test only applies to Python 2')
|
|
def test_printable_non_ascii():
|
|
class NonAsciiRepr(object):
|
|
def __repr__(self):
|
|
return 'a\xffb'
|
|
|
|
printable = u'%s' % _printable(NonAsciiRepr())
|
|
# should replace \xff with the unicode ? character
|
|
assert printable == u'a\ufffdb'
|