unicode fixes

This commit is contained in:
Anatoly Bubenkov 2014-07-25 22:59:23 +00:00
parent b08d385352
commit 76be97293f
2 changed files with 15 additions and 5 deletions

View File

@ -5,6 +5,8 @@ import time
import py
from .feature import force_unicode
def pytest_addoption(parser):
group = parser.getgroup('pytest-bdd')
@ -53,7 +55,7 @@ class LogBDDCucumberJSON(object):
elif report.failed and step['failed']:
return {
'status': 'failed',
'error_message': unicode(report.longrepr),
'error_message': force_unicode(report.longrepr),
}
elif report.skipped:
return {'status': 'skipped'}

View File

@ -116,11 +116,19 @@ def _open_file(filename, encoding):
return open(filename, 'r', encoding=encoding)
def force_unicode(string, encoding='utf-8'):
if sys.version_info < (3, 0) and isinstance(string, str):
return string.decode(encoding)
def force_unicode(obj, encoding='utf-8'):
"""Get the unicode string out of given object (python 2 and python 3).
:param obj: `object`, usually a string
:return: unicode string
"""
if sys.version_info < (3, 0):
if isinstance(obj, str):
return obj.decode(encoding)
else:
return unicode(obj)
else:
return string
return str(obj)
def force_encode(string, encoding='utf-8'):