1 new commit in pytest: https://bitbucket.org/hpk42/pytest/commits/79d43914cf2f/ Changeset: 79d43914cf2f User: flub Date: 2014-09-23 22:55:26+00:00 Summary: Let xfail work on non-python Items
For some reason xfail was only implemented on non-python Item instances. This removes this guard which means plugins creating new items can raise pytest.xfail.Exception and it will work as expected. Affected #: 2 files diff -r fcfcf15459f0e4ab43e8784befcd83ded913c8b2 -r 79d43914cf2f99b25a3b65f90a07a036b33e165f _pytest/skipping.py --- a/_pytest/skipping.py +++ b/_pytest/skipping.py @@ -58,6 +58,7 @@ @property def holder(self): return self.item.keywords.get(self.name, None) + def __bool__(self): return bool(self.holder) __nonzero__ = __bool__ @@ -136,8 +137,6 @@ @pytest.mark.tryfirst def pytest_runtest_setup(item): - if not isinstance(item, pytest.Function): - return evalskip = MarkEvaluator(item, 'skipif') if evalskip.istrue(): pytest.skip(evalskip.getexplanation()) @@ -155,8 +154,6 @@ pytest.xfail("[NOTRUN] " + evalxfail.getexplanation()) def pytest_runtest_makereport(__multicall__, item, call): - if not isinstance(item, pytest.Function): - return # unitttest special case, see setting of _unexpectedsuccess if hasattr(item, '_unexpectedsuccess'): rep = __multicall__.execute() diff -r fcfcf15459f0e4ab43e8784befcd83ded913c8b2 -r 79d43914cf2f99b25a3b65f90a07a036b33e165f testing/test_skipping.py --- a/testing/test_skipping.py +++ b/testing/test_skipping.py @@ -678,3 +678,23 @@ *True123* *1 xfail* """) + + +def test_xfail_item(testdir): + # Ensure pytest.xfail works with non-Python Item + testdir.makeconftest(""" + import pytest + + class MyItem(pytest.Item): + nodeid = 'foo' + def runtest(self): + pytest.xfail("Expected Failure") + + def pytest_collect_file(path, parent): + return MyItem("foo", parent) + """) + result = testdir.inline_run() + passed, skipped, failed = result.listoutcomes() + assert not failed + xfailed = [r for r in skipped if hasattr(r, 'wasxfail')] + assert xfailed Repository URL: https://bitbucket.org/hpk42/pytest/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit