Skip to content

Commit

Permalink
Merge pull request #7687 from bluetech/idval-notset
Browse files Browse the repository at this point in the history
python: fix empty parametrize() leading to "NotSetType.token" id
  • Loading branch information
nicoddemus committed Aug 25, 2020
2 parents 00996ad + a267a62 commit 8730a7b
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 0 deletions.
2 changes: 2 additions & 0 deletions changelog/7686.bugfix.rst
@@ -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.
3 changes: 3 additions & 0 deletions src/_pytest/python.py
Expand Up @@ -1293,6 +1293,9 @@ def _idval(
return str(val)
elif isinstance(val, REGEX_TYPE):
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):
return str(val)
elif isinstance(getattr(val, "__name__", None), str):
Expand Down
9 changes: 9 additions & 0 deletions testing/python/metafunc.py
Expand Up @@ -21,6 +21,7 @@
from _pytest import python
from _pytest.compat import _format_args
from _pytest.compat import getfuncargnames
from _pytest.compat import NOTSET
from _pytest.outcomes import fail
from _pytest.pytester import Testdir
from _pytest.python import _idval
Expand Down Expand Up @@ -359,6 +360,14 @@ def test_function():
for val, expected in values:
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:
"""#250"""
result = idmaker(
Expand Down

0 comments on commit 8730a7b

Please sign in to comment.