diff --git a/src/tirith/core/evaluators/regex_match.py b/src/tirith/core/evaluators/regex_match.py index b0aef15..d7b5332 100644 --- a/src/tirith/core/evaluators/regex_match.py +++ b/src/tirith/core/evaluators/regex_match.py @@ -7,7 +7,8 @@ def evaluate(self, evaluator_input, evaluator_data): evaluation_result = {"passed": False, "message": "Not evaluated"} try: match = 0 - if type(evaluator_input) == str and type(evaluator_data) == str: + if type(evaluator_input) in (str, list, dict) and type(evaluator_data) == str: + evaluator_input = str(evaluator_input) match = re.match(evaluator_data, evaluator_input) if match is None: evaluation_result = { diff --git a/tests/core/evaluators/test_regex_match.py b/tests/core/evaluators/test_regex_match.py index 21309ad..0ce28d6 100644 --- a/tests/core/evaluators/test_regex_match.py +++ b/tests/core/evaluators/test_regex_match.py @@ -22,3 +22,13 @@ def test_regex_passing(): def test_regex_failing(): result = evaluator.evaluate(evaluator_input2, evaluator_data2) assert result == {"passed": False, "message": f"{evaluator_input2} does not match regex pattern {evaluator_data2}"} + + +def test_regex_list(): + result = evaluator.evaluate(evaluator_input=["something"], evaluator_data=r"\['something'\]") + assert result["passed"] is True + + +def test_regex_dict(): + result = evaluator.evaluate(evaluator_input=dict(a=2), evaluator_data=r"{'a': 2}") + assert result["passed"] is True