Skip to content

Commit

Permalink
Merge pull request #9642 from pytest-dev/run-testid-with-colon-colon
Browse files Browse the repository at this point in the history
allow running testids which contain :: in the parametrized portion
  • Loading branch information
asottile committed Feb 8, 2022
2 parents efa16c2 + 2442034 commit c326c04
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 1 deletion.
1 change: 1 addition & 0 deletions changelog/9642.bugfix.rst
@@ -0,0 +1 @@
Fix running tests by id with ``::`` in the parametrize portion.
5 changes: 4 additions & 1 deletion src/_pytest/main.py
Expand Up @@ -870,7 +870,10 @@ def resolve_collection_argument(
If the path doesn't exist, raise UsageError.
If the path is a directory and selection parts are present, raise UsageError.
"""
strpath, *parts = str(arg).split("::")
base, squacket, rest = str(arg).partition("[")
strpath, *parts = base.split("::")
if parts:
parts[-1] = f"{parts[-1]}{squacket}{rest}"
if as_pypath:
strpath = search_pypath(strpath)
fspath = invocation_path / strpath
Expand Down
6 changes: 6 additions & 0 deletions testing/test_main.py
Expand Up @@ -171,6 +171,12 @@ def test_pypath(self, invocation_path: Path) -> None:
invocation_path, "pkg::foo::bar", as_pypath=True
)

def test_parametrized_name_with_colons(self, invocation_path: Path) -> None:
ret = resolve_collection_argument(
invocation_path, "src/pkg/test.py::test[a::b]"
)
assert ret == (invocation_path / "src/pkg/test.py", ["test[a::b]"])

def test_does_not_exist(self, invocation_path: Path) -> None:
"""Given a file/module that does not exist raises UsageError."""
with pytest.raises(
Expand Down

0 comments on commit c326c04

Please sign in to comment.