From ad285bccd78d896290e0c050e5202a58528ed4f3 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Wed, 24 Feb 2021 15:02:55 +0100 Subject: [PATCH] utils: mention expression on condition validation error (#50016) --- src/authentic2/utils/evaluate.py | 3 ++- tests/test_utils_evaluate.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/authentic2/utils/evaluate.py b/src/authentic2/utils/evaluate.py index a7957770..90474f3e 100644 --- a/src/authentic2/utils/evaluate.py +++ b/src/authentic2/utils/evaluate.py @@ -91,7 +91,7 @@ class BaseExpressionValidator(ast.NodeVisitor): else: ok = True if not ok: - raise ExpressionError(_('expression is forbidden'), node=node, code='forbidden-expression') + raise ExpressionError(_('expression "%(expression)s" is forbidden'), node=node, code='forbidden-expression') # specific node class check node_name = node.__class__.__name__ @@ -123,6 +123,7 @@ class BaseExpressionValidator(ast.NodeVisitor): except ExpressionError as e: if e.text is None: e.text = expression + e.params = {'expression': expression} six.reraise(*sys.exc_info()) return compile(tree, expression, mode='eval') diff --git a/tests/test_utils_evaluate.py b/tests/test_utils_evaluate.py index e6d1bbb4..69a21795 100644 --- a/tests/test_utils_evaluate.py +++ b/tests/test_utils_evaluate.py @@ -53,6 +53,7 @@ def test_condition_validator(): with pytest.raises(ExpressionError) as raised: v('a + b') + assert str(raised.value) == '[\'expression "a + b" is forbidden\']' with pytest.raises(ExpressionError) as raised: v('1 + 2') -- 2.20.1