Skip to content

Commit

Permalink
Merge pull request #3264 from jeffreyrack/3236-skipif-using-platform
Browse files Browse the repository at this point in the history
#3236 Use platform module in pytest.mark
  • Loading branch information
nicoddemus authored Feb 27, 2018
2 parents 5cb72b6 + 9479bda commit a968c0f
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
3 changes: 2 additions & 1 deletion _pytest/mark/evaluate.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import os
import six
import sys
import platform
import traceback

from . import MarkDecorator, MarkInfo
Expand Down Expand Up @@ -67,7 +68,7 @@ def istrue(self):
pytrace=False)

def _getglobals(self):
d = {'os': os, 'sys': sys, 'config': self.item.config}
d = {'os': os, 'sys': sys, 'platform': platform, 'config': self.item.config}
if hasattr(self.item, 'obj'):
d.update(self.item.obj.__globals__)
return d
Expand Down
1 change: 1 addition & 0 deletions changelog/3236.trivial.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The builtin module ``platform`` is now available for use in expressions in ``pytest.mark``.
25 changes: 25 additions & 0 deletions testing/test_skipping.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,21 @@ def test_func():
assert callreport.passed
assert callreport.wasxfail == "this is an xfail"

def test_xfail_using_platform(self, testdir):
"""
Verify that platform can be used with xfail statements.
"""
item = testdir.getitem("""
import pytest
@pytest.mark.xfail("platform.platform() == platform.platform()")
def test_func():
assert 0
""")
reports = runtestprotocol(item, log=False)
assert len(reports) == 3
callreport = reports[1]
assert callreport.wasxfail

def test_xfail_xpassed_strict(self, testdir):
item = testdir.getitem("""
import pytest
Expand Down Expand Up @@ -612,6 +627,16 @@ def test_that():
])
assert result.ret == 0

def test_skipif_using_platform(self, testdir):
item = testdir.getitem("""
import pytest
@pytest.mark.skipif("platform.platform() == platform.platform()")
def test_func():
pass
""")
pytest.raises(pytest.skip.Exception, lambda:
pytest_runtest_setup(item))

@pytest.mark.parametrize('marker, msg1, msg2', [
('skipif', 'SKIP', 'skipped'),
('xfail', 'XPASS', 'xpassed'),
Expand Down

0 comments on commit a968c0f

Please sign in to comment.