Allow MarkEvaluator expressions to be unicode

This fixes issue #266.
This commit is contained in:
Floris Bruynooghe 2013-02-15 11:47:48 +00:00
parent 0dd05023b8
commit 48e6aa9dc7
2 changed files with 21 additions and 1 deletions

View File

@ -3,6 +3,12 @@
import py, pytest
import sys
# Provide basestring in python3
try:
basestring = basestring
except NameError:
basestring = str
def pytest_addoption(parser):
group = parser.getgroup("general")
group.addoption('--runxfail',
@ -86,7 +92,7 @@ class MarkEvaluator:
self.result = False
for expr in self.holder.args:
self.expr = expr
if isinstance(expr, str):
if isinstance(expr, basestring):
result = cached_eval(self.item.config, expr, d)
else:
pytest.fail("expression is not a string")

View File

@ -39,6 +39,20 @@ class TestEvaluator:
expl = ev.getexplanation()
assert expl == "condition: hasattr(os, 'sep')"
@pytest.mark.skipif('sys.version_info[0] >= 3')
def test_marked_one_arg_unicode(self, testdir):
item = testdir.getitem("""
import pytest
@pytest.mark.xyz(u"hasattr(os, 'sep')")
def test_func():
pass
""")
ev = MarkEvaluator(item, 'xyz')
assert ev
assert ev.istrue()
expl = ev.getexplanation()
assert expl == "condition: hasattr(os, 'sep')"
def test_marked_one_arg_with_reason(self, testdir):
item = testdir.getitem("""
import pytest