diff --git a/docs/changelog/2823.bugfix.rst b/docs/changelog/2823.bugfix.rst new file mode 100644 index 000000000..7b0b6e21c --- /dev/null +++ b/docs/changelog/2823.bugfix.rst @@ -0,0 +1 @@ +Also accept tab after colon before factor filter expansion - by :user:`pdecat`. diff --git a/src/tox/config/loader/ini/factor.py b/src/tox/config/loader/ini/factor.py index c429efb1d..099948cda 100644 --- a/src/tox/config/loader/ini/factor.py +++ b/src/tox/config/loader/ini/factor.py @@ -49,8 +49,9 @@ def explode_factor(group: list[tuple[str, bool]]) -> str: def expand_factors(value: str) -> Iterator[tuple[list[list[tuple[str, bool]]] | None, str]]: for line in value.split("\n"): factors: list[list[tuple[str, bool]]] | None = None - marker_at, content = line.find(":"), line - if marker_at != -1 and (len(line) == marker_at + 1 or line[marker_at + 1] == " "): + marker_search = re.search(r":(\s|$)", line) + marker_at, content = marker_search.start() if marker_search else -1, line + if marker_at != -1: try: factors = list(find_factor_groups(line[:marker_at].strip())) except ValueError: diff --git a/tests/config/loader/ini/test_factor.py b/tests/config/loader/ini/test_factor.py index cec786b3f..2a6f405c4 100644 --- a/tests/config/loader/ini/test_factor.py +++ b/tests/config/loader/ini/test_factor.py @@ -31,6 +31,8 @@ def complex_example() -> str: extra: extra more-default no:space + trailingcolon: + tab:\ttab """, ) @@ -50,6 +52,8 @@ def test_factor_env_discover(complex_example: str) -> None: "c", "d", "extra", + "trailingcolon", + "tab", ] @@ -67,6 +71,8 @@ def test_factor_env_discover(complex_example: str) -> None: "pi-b-dev", "c", "extra", + "trailingcolon", + "tab", ], ) def test_factor_env_filter(env: str, complex_example: str) -> None: