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. --HG-- branch : issue557
This commit is contained in:
		
							parent
							
								
									dfda9acd6d
								
							
						
					
					
						commit
						39158957f4
					
				|  | @ -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