Skip to content

Commit

Permalink
Call pytest_report_collectionfinish hook when --collect-only is passed
Browse files Browse the repository at this point in the history
  • Loading branch information
nicoddemus committed Feb 6, 2019
1 parent a945734 commit c72cb4f
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 9 deletions.
1 change: 1 addition & 0 deletions changelog/2895.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The ``pytest_report_collectionfinish`` hook now is also called with ``--collect-only``.
15 changes: 8 additions & 7 deletions src/_pytest/terminal.py
Original file line number Diff line number Diff line change
Expand Up @@ -574,19 +574,20 @@ def pytest_report_header(self, config):
return lines

def pytest_collection_finish(self, session):
if self.config.option.collectonly:
if self.config.getoption("collectonly"):
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(
config=self.config, startdir=self.startdir, items=session.items
)
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):
# to print out items and their parent collectors
# we take care to leave out Instances aka ()
Expand Down
7 changes: 5 additions & 2 deletions testing/test_terminal.py
Original file line number Diff line number Diff line change
Expand Up @@ -649,7 +649,10 @@ def test_more_quiet_reporting(self, testdir):
assert "===" 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(
"""
def pytest_report_collectionfinish(config, startdir, items):
Expand All @@ -664,7 +667,7 @@ def test(i):
pass
"""
)
result = testdir.runpytest()
result = testdir.runpytest(*params)
result.stdout.fnmatch_lines(["collected 3 items", "hello from hook: 3 items"])


Expand Down

0 comments on commit c72cb4f

Please sign in to comment.