fix(validators): validate regex patterns at init time

ContainsValidator and ExcludesValidator now pre-compile regex patterns
during initialisation and raise InvalidThresholdError if invalid.
This commit is contained in:
2026-02-04 00:22:47 +00:00
parent f18427e123
commit aa687f43cd
2 changed files with 38 additions and 6 deletions

View File

@@ -263,6 +263,11 @@ class TestContainsValidator:
with pytest.raises(InvalidThresholdError, match="cannot be empty"):
ContainsValidator(patterns=[])
def test_contains_validator_raises_on_invalid_regex(self) -> None:
"""Test that invalid regex pattern raises error at init time."""
with pytest.raises(InvalidThresholdError, match="Invalid regex"):
ContainsValidator(patterns=[r"[invalid"])
def test_contains_factory_function(self) -> None:
"""Test the contains() factory function."""
validator = contains(patterns=["test"], case_sensitive=True)
@@ -327,6 +332,11 @@ class TestExcludesValidator:
with pytest.raises(InvalidThresholdError, match="cannot be empty"):
ExcludesValidator(patterns=[])
def test_excludes_validator_raises_on_invalid_regex(self) -> None:
"""Test that invalid regex pattern raises error at init time."""
with pytest.raises(InvalidThresholdError, match="Invalid regex"):
ExcludesValidator(patterns=[r"[invalid"])
def test_excludes_factory_function(self) -> None:
"""Test the excludes() factory function."""
validator = excludes(patterns=["test"], case_sensitive=True)