Skip to content

Commit

Permalink
Fix crash using empty string for parametrized value more than once
Browse files Browse the repository at this point in the history
  • Loading branch information
nicoddemus committed Oct 27, 2023
1 parent 2474368 commit 0b83845
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 1 deletion.
1 change: 1 addition & 0 deletions changelog/11563.bugfix.rst
@@ -0,0 +1 @@
Fixed crash when using an empty string for the same parametrized value more than once.
2 changes: 1 addition & 1 deletion src/_pytest/python.py
Expand Up @@ -1003,7 +1003,7 @@ def make_unique_parameterset_ids(self) -> List[str]:
for index, id in enumerate(resolved_ids):
if id_counts[id] > 1:
suffix = ""
if id[-1].isdigit():
if id and id[-1].isdigit():
suffix = "_"
new_id = f"{id}{suffix}{id_suffixes[id]}"
while new_id in set(resolved_ids):
Expand Down
7 changes: 7 additions & 0 deletions testing/python/metafunc.py
Expand Up @@ -626,6 +626,13 @@ def getini(self, name):
).make_unique_parameterset_ids()
assert result == [expected]

def test_idmaker_duplicated_empty_str(self) -> None:
"""Regression test for empty strings parametrized more than once (#11563)."""
result = IdMaker(
("a",), [pytest.param(""), pytest.param("")], None, None, None, None, None
).make_unique_parameterset_ids()
assert result == ["0", "1"]

def test_parametrize_ids_exception(self, pytester: Pytester) -> None:
"""
:param pytester: the instance of Pytester class, a temporary
Expand Down

0 comments on commit 0b83845

Please sign in to comment.