34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
import platform
|
|
|
|
import pytest
|
|
|
|
import falcon
|
|
|
|
|
|
# NOTE(kgriffs): Some modules actually run a wsgiref server, so
|
|
# to ensure we reset the detection for the other modules, we just
|
|
# run this fixture before each one is tested.
|
|
@pytest.fixture(autouse=True, scope='module')
|
|
def reset_request_stream_detection():
|
|
falcon.Request._wsgi_input_type_known = False
|
|
falcon.Request._always_wrap_wsgi_input = False
|
|
|
|
|
|
# NOTE(kgriffs): Patch pytest to make it compatible with Jython. This
|
|
# is necessary because val.encode() raises UnicodeEncodeError instead
|
|
# of UnicodeDecodeError, and running under Jython triggers this buggy
|
|
# code path in pytest.
|
|
if platform.python_implementation() == 'Jython':
|
|
import _pytest.python
|
|
|
|
def _escape_strings(val):
|
|
if isinstance(val, bytes):
|
|
try:
|
|
return val.encode('ascii')
|
|
except UnicodeEncodeError:
|
|
return val.encode('string-escape')
|
|
else:
|
|
return val.encode('unicode-escape')
|
|
|
|
_pytest.python._escape_strings = _escape_strings
|