|
From: cfalcon <cf...@ce...> - 2015-12-14 17:03:38
|
EvaluationAttributeNameValidator validates correctly the Evaluation
Device URIs as evaluation attributes. e.g. eval:@Foo
Fix the validator to not accept the '@' as part of the expression.
Add some tests.
---
lib/taurus/core/evaluation/evalvalidator.py | 2 +-
lib/taurus/core/evaluation/test/test_evalvalidator.py | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/taurus/core/evaluation/evalvalidator.py b/lib/taurus/core/evaluation/evalvalidator.py
index 328ebf6..c9bde9a 100644
--- a/lib/taurus/core/evaluation/evalvalidator.py
+++ b/lib/taurus/core/evaluation/evalvalidator.py
@@ -196,7 +196,7 @@ class EvaluationAttributeNameValidator(TaurusAttributeNameValidator):
scheme = 'eval'
authority = EvaluationAuthorityNameValidator.authority
path = ((r'(?!//)/?(%s/)?' +
- r'(?P<attrname>(?P<_subst>(%s;)+)?(?P<_expr>[^?#]+))') %
+ r'(?P<attrname>(?P<_subst>(%s;)+)?(?P<_expr>[^@?#]+))') %
(EvaluationDeviceNameValidator.devname, K_EQUALS_V)
)
query = '(?!)'
diff --git a/lib/taurus/core/evaluation/test/test_evalvalidator.py b/lib/taurus/core/evaluation/test/test_evalvalidator.py
index 1f460d0..7ea51fa 100644
--- a/lib/taurus/core/evaluation/test/test_evalvalidator.py
+++ b/lib/taurus/core/evaluation/test/test_evalvalidator.py
@@ -213,6 +213,8 @@ class EvaluationDevValidatorTestCase(AbstractNameValidatorTestCase,
# @invalid(name='eval:1?configuration')
# @invalid(name='eval:1?configuration=foo')
+@invalid(name='eval:@foo') # invalid because is a device URI
+@invalid(name='eval:{tango:a/b/c}') # invalid because is a device URI
#===============================================================================
#
--
2.4.0
|