pytest.fail with non-ascii characters raises an internal pytest error
Fix #1178
This commit is contained in:
parent
3884398055
commit
24d3e01548
|
@ -5,6 +5,10 @@
|
||||||
|
|
||||||
*
|
*
|
||||||
|
|
||||||
|
* Fix (`#1178 <https://github.com/pytest-dev/pytest/issues/1178>`_):
|
||||||
|
``pytest.fail`` with non-ascii characters raises an internal pytest error.
|
||||||
|
Thanks `@nicoddemus`_ for the PR.
|
||||||
|
|
||||||
* Fix (`#469`_): junit parses report.nodeid incorrectly, when params IDs
|
* Fix (`#469`_): junit parses report.nodeid incorrectly, when params IDs
|
||||||
contain ``::``. Thanks `@tomviner`_ for the PR (`#1431`_).
|
contain ``::``. Thanks `@tomviner`_ for the PR (`#1431`_).
|
||||||
|
|
||||||
|
|
|
@ -740,7 +740,7 @@ class FunctionMixin(PyobjMixin):
|
||||||
def _repr_failure_py(self, excinfo, style="long"):
|
def _repr_failure_py(self, excinfo, style="long"):
|
||||||
if excinfo.errisinstance(pytest.fail.Exception):
|
if excinfo.errisinstance(pytest.fail.Exception):
|
||||||
if not excinfo.value.pytrace:
|
if not excinfo.value.pytrace:
|
||||||
return str(excinfo.value)
|
return py._builtin._totext(excinfo.value)
|
||||||
return super(FunctionMixin, self)._repr_failure_py(excinfo,
|
return super(FunctionMixin, self)._repr_failure_py(excinfo,
|
||||||
style=style)
|
style=style)
|
||||||
|
|
||||||
|
|
|
@ -435,7 +435,7 @@ class OutcomeException(Exception):
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
if self.msg:
|
if self.msg:
|
||||||
return str(self.msg)
|
return py._builtin._totext(self.msg)
|
||||||
return "<%s instance>" %(self.__class__.__name__,)
|
return "<%s instance>" %(self.__class__.__name__,)
|
||||||
__str__ = __repr__
|
__str__ = __repr__
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import with_statement
|
from __future__ import with_statement
|
||||||
|
|
||||||
import _pytest._code
|
import _pytest._code
|
||||||
|
@ -439,6 +440,24 @@ def test_pytest_fail_notrace(testdir):
|
||||||
assert 'def teardown_function' not in result.stdout.str()
|
assert 'def teardown_function' not in result.stdout.str()
|
||||||
|
|
||||||
|
|
||||||
|
def test_pytest_fail_notrace_unicode(testdir):
|
||||||
|
"""Fix pytest.fail with pytrace=False with non-ascii characters (#1178).
|
||||||
|
"""
|
||||||
|
testdir.makepyfile(u"""
|
||||||
|
# coding: utf-8
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
def test_hello():
|
||||||
|
pytest.fail(u'oh oh: ☺', pytrace=False)
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest()
|
||||||
|
if sys.version_info[0] >= 3:
|
||||||
|
result.stdout.fnmatch_lines(['*test_hello*', "oh oh: ☺"])
|
||||||
|
else:
|
||||||
|
result.stdout.fnmatch_lines(['*test_hello*', "oh oh: *"])
|
||||||
|
assert 'def test_hello' not in result.stdout.str()
|
||||||
|
|
||||||
|
|
||||||
def test_pytest_no_tests_collected_exit_status(testdir):
|
def test_pytest_no_tests_collected_exit_status(testdir):
|
||||||
result = testdir.runpytest()
|
result = testdir.runpytest()
|
||||||
result.stdout.fnmatch_lines('*collected 0 items*')
|
result.stdout.fnmatch_lines('*collected 0 items*')
|
||||||
|
|
Loading…
Reference in New Issue