Skip to content

Commit 74a5e0c

Browse files
authored
Merge pull request #371 from nicoddemus/skip-module-370
Fix handling of skipped modules with pytest.skip at module level
2 parents d40d47a + 3292e0e commit 74a5e0c

File tree

4 files changed

+13
-10
lines changed

4 files changed

+13
-10
lines changed

changelog/332.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix report of module-level skips (``pytest.skip(reason, allow_module_level=True)``).

testing/test_remote.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import py
22
import pprint
33
import pytest
4+
from pkg_resources import parse_version
5+
46
from xdist.workermanage import WorkerController, unserialize_report
57
from xdist.remote import serialize_report
68
import execnet
@@ -293,24 +295,24 @@ def test_func():
293295
assert "workeroutput" in ev.kwargs
294296

295297
@pytest.mark.skipif(
296-
pytest.__version__ >= "3.0", reason="skip at module level illegal in pytest 3.0"
298+
parse_version(pytest.__version__) < parse_version("3.3"),
299+
reason="skip at module level illegal in this pytest version",
297300
)
298301
def test_remote_collect_skip(self, worker):
299302
worker.testdir.makepyfile(
300303
"""
301-
import py
302-
py.test.skip("hello")
304+
import pytest
305+
pytest.skip("hello", allow_module_level=True)
303306
"""
304307
)
305308
worker.setup()
306309
ev = worker.popevent("collectionstart")
307310
assert not ev.kwargs
308311
ev = worker.popevent()
309312
assert ev.name == "collectreport"
310-
ev = worker.popevent()
311-
assert ev.name == "collectreport"
312313
rep = unserialize_report(ev.name, ev.kwargs["data"])
313314
assert rep.skipped
315+
assert rep.longrepr[2] == "Skipped: hello"
314316
ev = worker.popevent("collectionfinish")
315317
assert not ev.kwargs["ids"]
316318

xdist/dsession.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -259,10 +259,10 @@ def worker_runtest_protocol_complete(self, node, item_index, duration):
259259
def worker_collectreport(self, node, rep):
260260
"""Emitted when a node calls the pytest_collectreport hook.
261261
262-
Because we only need the report when there's a failure, as optimization
263-
we only expect to receive failed reports from workers (#330).
262+
Because we only need the report when there's a failure/skip, as optimization
263+
we only expect to receive failed/skipped reports from workers (#330).
264264
"""
265-
assert rep.failed
265+
assert not rep.passed
266266
self._failed_worker_collectreport(node, rep)
267267

268268
def worker_logwarning(self, message, code, nodeid, fslocation):

xdist/remote.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ def pytest_runtest_logreport(self, report):
110110
self.sendevent("testreport", data=data)
111111

112112
def pytest_collectreport(self, report):
113-
# master only needs reports that failed, as optimization send only them instead (#330)
114-
if report.failed:
113+
# send only reports that have not passed to master as optimization (#330)
114+
if not report.passed:
115115
data = serialize_report(report)
116116
self.sendevent("collectreport", data=data)
117117

0 commit comments

Comments
 (0)