terminal: use pytest_collection_finish for reporting (#5113)
terminal: use pytest_collection_finish for reporting
This commit is contained in:
commit
fb6dad60a0
|
@ -0,0 +1 @@
|
||||||
|
Deselected items from plugins using ``pytest_collect_modifyitems`` as a hookwrapper are correctly reported now.
|
|
@ -552,10 +552,6 @@ class TerminalReporter(object):
|
||||||
else:
|
else:
|
||||||
self.write_line(line)
|
self.write_line(line)
|
||||||
|
|
||||||
@pytest.hookimpl(trylast=True)
|
|
||||||
def pytest_collection_modifyitems(self):
|
|
||||||
self.report_collect(True)
|
|
||||||
|
|
||||||
@pytest.hookimpl(trylast=True)
|
@pytest.hookimpl(trylast=True)
|
||||||
def pytest_sessionstart(self, session):
|
def pytest_sessionstart(self, session):
|
||||||
self._session = session
|
self._session = session
|
||||||
|
@ -608,6 +604,8 @@ class TerminalReporter(object):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def pytest_collection_finish(self, session):
|
def pytest_collection_finish(self, session):
|
||||||
|
self.report_collect(True)
|
||||||
|
|
||||||
if self.config.getoption("collectonly"):
|
if self.config.getoption("collectonly"):
|
||||||
self._printcollecteditems(session.items)
|
self._printcollecteditems(session.items)
|
||||||
|
|
||||||
|
|
|
@ -506,6 +506,37 @@ class TestTerminalFunctional(object):
|
||||||
)
|
)
|
||||||
assert result.ret == 0
|
assert result.ret == 0
|
||||||
|
|
||||||
|
def test_deselected_with_hookwrapper(self, testdir):
|
||||||
|
testpath = testdir.makeconftest(
|
||||||
|
"""
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
@pytest.hookimpl(hookwrapper=True)
|
||||||
|
def pytest_collection_modifyitems(config, items):
|
||||||
|
yield
|
||||||
|
deselected = items.pop()
|
||||||
|
config.hook.pytest_deselected(items=[deselected])
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
testpath = testdir.makepyfile(
|
||||||
|
"""
|
||||||
|
def test_one():
|
||||||
|
pass
|
||||||
|
def test_two():
|
||||||
|
pass
|
||||||
|
def test_three():
|
||||||
|
pass
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
result = testdir.runpytest(testpath)
|
||||||
|
result.stdout.fnmatch_lines(
|
||||||
|
[
|
||||||
|
"collected 3 items / 1 deselected / 2 selected",
|
||||||
|
"*= 2 passed, 1 deselected in*",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
assert result.ret == 0
|
||||||
|
|
||||||
def test_show_deselected_items_using_markexpr_before_test_execution(self, testdir):
|
def test_show_deselected_items_using_markexpr_before_test_execution(self, testdir):
|
||||||
testdir.makepyfile(
|
testdir.makepyfile(
|
||||||
test_show_deselected="""
|
test_show_deselected="""
|
||||||
|
|
Loading…
Reference in New Issue