fix issue557: with "-k" we only allow the old style "-" for negation
at the beginning of strings and even that is deprecated. Use "not" instead. This should allow to pick parametrized tests where "-" appeared in the parameter.
This commit is contained in:
parent
c6951d5184
commit
2cb0145bce
|
@ -9,6 +9,10 @@ Unreleased
|
||||||
|
|
||||||
- updated plugin index docs. Thanks Bruno Oliveira.
|
- updated plugin index docs. Thanks Bruno Oliveira.
|
||||||
|
|
||||||
|
- fix issue557: with "-k" we only allow the old style "-" for negation
|
||||||
|
at the beginning of strings and even that is deprecated. Use "not" instead.
|
||||||
|
This should allow to pick parametrized tests where "-" appeared in the parameter.
|
||||||
|
|
||||||
2.6.3
|
2.6.3
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,11 @@ def pytest_collection_modifyitems(items, config):
|
||||||
matchexpr = config.option.markexpr
|
matchexpr = config.option.markexpr
|
||||||
if not keywordexpr and not matchexpr:
|
if not keywordexpr and not matchexpr:
|
||||||
return
|
return
|
||||||
|
# pytest used to allow "-" for negating
|
||||||
|
# but today we just allow "-" at the beginning, use "not" instead
|
||||||
|
# we probably remove "-" alltogether soon
|
||||||
|
if keywordexpr.startswith("-"):
|
||||||
|
keywordexpr = "not " + keywordexpr[1:]
|
||||||
selectuntil = False
|
selectuntil = False
|
||||||
if keywordexpr[-1:] == ":":
|
if keywordexpr[-1:] == ":":
|
||||||
selectuntil = True
|
selectuntil = True
|
||||||
|
@ -122,7 +127,6 @@ def matchkeyword(colitem, keywordexpr):
|
||||||
Additionally, matches on names in the 'extra_keyword_matches' set of
|
Additionally, matches on names in the 'extra_keyword_matches' set of
|
||||||
any item, as well as names directly assigned to test functions.
|
any item, as well as names directly assigned to test functions.
|
||||||
"""
|
"""
|
||||||
keywordexpr = keywordexpr.replace("-", "not ")
|
|
||||||
mapped_names = set()
|
mapped_names = set()
|
||||||
|
|
||||||
# Add the names of the current item and any parent items
|
# Add the names of the current item and any parent items
|
||||||
|
|
|
@ -234,12 +234,13 @@ def test_keyword_option_custom(spec, testdir):
|
||||||
|
|
||||||
@pytest.mark.parametrize("spec", [
|
@pytest.mark.parametrize("spec", [
|
||||||
("None", ("test_func[None]",)),
|
("None", ("test_func[None]",)),
|
||||||
("1.3", ("test_func[1.3]",))
|
("1.3", ("test_func[1.3]",)),
|
||||||
|
("2-3", ("test_func[2-3]",))
|
||||||
])
|
])
|
||||||
def test_keyword_option_parametrize(spec, testdir):
|
def test_keyword_option_parametrize(spec, testdir):
|
||||||
testdir.makepyfile("""
|
testdir.makepyfile("""
|
||||||
import pytest
|
import pytest
|
||||||
@pytest.mark.parametrize("arg", [None, 1.3])
|
@pytest.mark.parametrize("arg", [None, 1.3, "2-3"])
|
||||||
def test_func(arg):
|
def test_func(arg):
|
||||||
pass
|
pass
|
||||||
""")
|
""")
|
||||||
|
@ -497,7 +498,7 @@ class TestKeywordSelection:
|
||||||
check('TestClass and test', 'test_method_one')
|
check('TestClass and test', 'test_method_one')
|
||||||
|
|
||||||
@pytest.mark.parametrize("keyword", [
|
@pytest.mark.parametrize("keyword", [
|
||||||
'xxx', 'xxx and test_2', 'TestClass', 'xxx and -test_1',
|
'xxx', 'xxx and test_2', 'TestClass', 'xxx and not test_1',
|
||||||
'TestClass and test_2', 'xxx and TestClass and test_2'])
|
'TestClass and test_2', 'xxx and TestClass and test_2'])
|
||||||
def test_select_extra_keywords(self, testdir, keyword):
|
def test_select_extra_keywords(self, testdir, keyword):
|
||||||
p = testdir.makepyfile(test_select="""
|
p = testdir.makepyfile(test_select="""
|
||||||
|
|
Loading…
Reference in New Issue