Merge pull request #6100 from blueyed/fix-skip-offset

terminal: fix line offset with skip reports
This commit is contained in:
Daniel Hahler 2019-11-06 13:29:40 +01:00 committed by GitHub
commit 01769b141a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 6 deletions

View File

@ -0,0 +1 @@
Fix line offset mismatch with skipped tests in terminal summary.

View File

@ -161,9 +161,9 @@ def pytest_runtest_makereport(item, call):
# skipped by mark.skipif; change the location of the failure
# to point to the item definition, otherwise it will display
# the location of where the skip exception was raised within pytest
filename, line, reason = rep.longrepr
_, _, reason = rep.longrepr
filename, line = item.location[:2]
rep.longrepr = filename, line, reason
rep.longrepr = filename, line + 1, reason
# called by terminalreporter progress reporting

View File

@ -965,7 +965,7 @@ class TerminalReporter:
if lineno is not None:
lines.append(
"%s [%d] %s:%d: %s"
% (verbose_word, num, fspath, lineno + 1, reason)
% (verbose_word, num, fspath, lineno, reason)
)
else:
lines.append("%s [%d] %s: %s" % (verbose_word, num, fspath, reason))

View File

@ -731,23 +731,37 @@ def test_skipif_class(testdir):
def test_skipped_reasons_functional(testdir):
testdir.makepyfile(
test_one="""
import pytest
from conftest import doskip
def setup_function(func):
doskip()
def test_func():
pass
class TestClass(object):
def test_method(self):
doskip()
""",
@pytest.mark.skip("via_decorator")
def test_deco(self):
assert 0
""",
conftest="""
import pytest
import pytest, sys
def doskip():
assert sys._getframe().f_lineno == 3
pytest.skip('test')
""",
)
result = testdir.runpytest("-rs")
result.stdout.fnmatch_lines(["*SKIP*2*conftest.py:4: test"])
result.stdout.fnmatch_lines_random(
[
"SKIPPED [[]2[]] */conftest.py:4: test",
"SKIPPED [[]1[]] test_one.py:14: via_decorator",
]
)
assert result.ret == 0