Remove partial unicode characters from summary messages in Python 2

This commit is contained in:
Bruno Oliveira 2019-04-11 19:01:21 -03:00
parent 2b1ae8a66d
commit 14d3d9187f
1 changed files with 11 additions and 0 deletions

View File

@ -1,8 +1,11 @@
# coding=utf8
""" support for skip/xfail functions and markers. """
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import six
from _pytest.config import hookimpl
from _pytest.mark.evaluate import MarkEvaluator
from _pytest.outcomes import fail
@ -237,6 +240,14 @@ def _get_line_with_reprcrash_message(config, rep, termwidth):
msg = msg[:max_len_msg]
while wcswidth(msg) > max_len_msg:
msg = msg[:-1]
if six.PY2:
# on python 2 systems with narrow unicode compilation, trying to
# get a single character out of a multi-byte unicode character such as
# u'😄' will result in a High Surrogate (U+D83D) character, which is
# rendered as u'<27>'; in this case we just strip that character out as it
# serves no purpose being rendered
while msg.endswith(u"\uD83D"):
msg = msg[:-1]
msg += ellipsis
line += sep + msg
return line