Merge pull request #7687 from bluetech/idval-notset
python: fix empty parametrize() leading to "NotSetType.token" id
This commit is contained in:
		
						commit
						8730a7bb14
					
				|  | @ -0,0 +1,2 @@ | ||||||
|  | Fixed `NotSetType.token` being used as the parameter ID when the parametrization list is empty. | ||||||
|  | Regressed in pytest 6.0.0. | ||||||
|  | @ -1293,6 +1293,9 @@ def _idval( | ||||||
|         return str(val) |         return str(val) | ||||||
|     elif isinstance(val, REGEX_TYPE): |     elif isinstance(val, REGEX_TYPE): | ||||||
|         return ascii_escaped(val.pattern) |         return ascii_escaped(val.pattern) | ||||||
|  |     elif val is NOTSET: | ||||||
|  |         # Fallback to default. Note that NOTSET is an enum.Enum. | ||||||
|  |         pass | ||||||
|     elif isinstance(val, enum.Enum): |     elif isinstance(val, enum.Enum): | ||||||
|         return str(val) |         return str(val) | ||||||
|     elif isinstance(getattr(val, "__name__", None), str): |     elif isinstance(getattr(val, "__name__", None), str): | ||||||
|  |  | ||||||
|  | @ -21,6 +21,7 @@ from _pytest import fixtures | ||||||
| from _pytest import python | from _pytest import python | ||||||
| from _pytest.compat import _format_args | from _pytest.compat import _format_args | ||||||
| from _pytest.compat import getfuncargnames | from _pytest.compat import getfuncargnames | ||||||
|  | from _pytest.compat import NOTSET | ||||||
| from _pytest.outcomes import fail | from _pytest.outcomes import fail | ||||||
| from _pytest.pytester import Testdir | from _pytest.pytester import Testdir | ||||||
| from _pytest.python import _idval | from _pytest.python import _idval | ||||||
|  | @ -359,6 +360,14 @@ class TestMetafunc: | ||||||
|         for val, expected in values: |         for val, expected in values: | ||||||
|             assert _idval(val, "a", 6, None, nodeid=None, config=None) == expected |             assert _idval(val, "a", 6, None, nodeid=None, config=None) == expected | ||||||
| 
 | 
 | ||||||
|  |     def test_notset_idval(self) -> None: | ||||||
|  |         """Test that a NOTSET value (used by an empty parameterset) generates | ||||||
|  |         a proper ID. | ||||||
|  | 
 | ||||||
|  |         Regression test for #7686. | ||||||
|  |         """ | ||||||
|  |         assert _idval(NOTSET, "a", 0, None, nodeid=None, config=None) == "a0" | ||||||
|  | 
 | ||||||
|     def test_idmaker_autoname(self) -> None: |     def test_idmaker_autoname(self) -> None: | ||||||
|         """#250""" |         """#250""" | ||||||
|         result = idmaker( |         result = idmaker( | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue