Call pytest_report_collectionfinish hook when --collect-only is passed
Fix #2895
This commit is contained in:
parent
a9457345ee
commit
54af0f4c65
|
@ -0,0 +1 @@
|
||||||
|
The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``.
|
|
@ -574,19 +574,20 @@ class TerminalReporter(object):
|
||||||
return lines
|
return lines
|
||||||
|
|
||||||
def pytest_collection_finish(self, session):
|
def pytest_collection_finish(self, session):
|
||||||
if self.config.option.collectonly:
|
if self.config.getoption("collectonly"):
|
||||||
self._printcollecteditems(session.items)
|
self._printcollecteditems(session.items)
|
||||||
if self.stats.get("failed"):
|
|
||||||
self._tw.sep("!", "collection failures")
|
|
||||||
for rep in self.stats.get("failed"):
|
|
||||||
rep.toterminal(self._tw)
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
lines = self.config.hook.pytest_report_collectionfinish(
|
lines = self.config.hook.pytest_report_collectionfinish(
|
||||||
config=self.config, startdir=self.startdir, items=session.items
|
config=self.config, startdir=self.startdir, items=session.items
|
||||||
)
|
)
|
||||||
self._write_report_lines_from_hooks(lines)
|
self._write_report_lines_from_hooks(lines)
|
||||||
|
|
||||||
|
if self.config.getoption("collectonly"):
|
||||||
|
if self.stats.get("failed"):
|
||||||
|
self._tw.sep("!", "collection failures")
|
||||||
|
for rep in self.stats.get("failed"):
|
||||||
|
rep.toterminal(self._tw)
|
||||||
|
|
||||||
def _printcollecteditems(self, items):
|
def _printcollecteditems(self, items):
|
||||||
# to print out items and their parent collectors
|
# to print out items and their parent collectors
|
||||||
# we take care to leave out Instances aka ()
|
# we take care to leave out Instances aka ()
|
||||||
|
|
|
@ -649,7 +649,10 @@ class TestTerminalFunctional(object):
|
||||||
assert "===" not in s
|
assert "===" not in s
|
||||||
assert "passed" not in s
|
assert "passed" not in s
|
||||||
|
|
||||||
def test_report_collectionfinish_hook(self, testdir):
|
@pytest.mark.parametrize(
|
||||||
|
"params", [(), ("--collect-only",)], ids=["no-params", "collect-only"]
|
||||||
|
)
|
||||||
|
def test_report_collectionfinish_hook(self, testdir, params):
|
||||||
testdir.makeconftest(
|
testdir.makeconftest(
|
||||||
"""
|
"""
|
||||||
def pytest_report_collectionfinish(config, startdir, items):
|
def pytest_report_collectionfinish(config, startdir, items):
|
||||||
|
@ -664,7 +667,7 @@ class TestTerminalFunctional(object):
|
||||||
pass
|
pass
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
result = testdir.runpytest()
|
result = testdir.runpytest(*params)
|
||||||
result.stdout.fnmatch_lines(["collected 3 items", "hello from hook: 3 items"])
|
result.stdout.fnmatch_lines(["collected 3 items", "hello from hook: 3 items"])
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue