Revert change to traceback repr (#7535)

* Revert change to traceback repr

* Add test and changelog entry

* Restore *exact* prev output

Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
This commit is contained in:
Zac Hatfield-Dodds 2020-07-24 21:30:38 +10:00 committed by GitHub
parent 7ec6401ffa
commit 3a060b77e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 1 deletions

View File

@ -0,0 +1 @@
Restored the previous formatting of ``TracebackEntry.__str__`` which was changed by accident.

View File

@ -262,7 +262,15 @@ class TracebackEntry:
raise
except BaseException:
line = "???"
return " File %r:%d in %s\n %s\n" % (self.path, self.lineno + 1, name, line)
# This output does not quite match Python's repr for traceback entries,
# but changing it to do so would break certain plugins. See
# https://github.com/pytest-dev/pytest/pull/7535/ for details.
return " File %r:%d in %s\n %s\n" % (
str(self.path),
self.lineno + 1,
name,
line,
)
@property
def name(self) -> str:

View File

@ -1,3 +1,4 @@
import re
import sys
from types import FrameType
from unittest import mock
@ -170,6 +171,15 @@ class TestTracebackEntry:
assert len(source) == 6
assert "assert False" in source[5]
def test_tb_entry_str(self):
try:
assert False
except AssertionError:
exci = ExceptionInfo.from_current()
pattern = r" File '.*test_code.py':\d+ in test_tb_entry_str\n assert False"
entry = str(exci.traceback[0])
assert re.match(pattern, entry)
class TestReprFuncArgs:
def test_not_raise_exception_with_mixed_encoding(self, tw_mock) -> None: