checkbox-dev team mailing list archive
-
checkbox-dev team
-
Mailing list archive
-
Message #00073
[PATCH 09/11] plainbox:secure:config: make KindValidator produce better i18n messages
Signed-off-by: Zygmunt Krynicki <zygmunt.krynicki@xxxxxxxxxxxxx>
---
plainbox/plainbox/impl/secure/config.py | 7 ++++++-
plainbox/plainbox/impl/secure/test_config.py | 27 +++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/plainbox/plainbox/impl/secure/config.py b/plainbox/plainbox/impl/secure/config.py
index 7e8f87f..d3c9232 100644
--- a/plainbox/plainbox/impl/secure/config.py
+++ b/plainbox/plainbox/impl/secure/config.py
@@ -672,7 +672,12 @@ def KindValidator(variable, new_value):
A validator ensuring that values match the "kind" of the variable.
"""
if not isinstance(new_value, variable.kind):
- return _("expected a {}").format(variable.kind.__name__)
+ return {
+ bool: _("expected a boolean"),
+ int: _("expected an integer"),
+ float: _("expected a floating point number"),
+ str: _("expected a string"),
+ }[variable.kind]
class PatternValidator(IValidator):
diff --git a/plainbox/plainbox/impl/secure/test_config.py b/plainbox/plainbox/impl/secure/test_config.py
index e1ce0dd..f92f626 100644
--- a/plainbox/plainbox/impl/secure/test_config.py
+++ b/plainbox/plainbox/impl/secure/test_config.py
@@ -321,6 +321,33 @@ class PlainBoxConfigParserTest(TestCase):
self.assertFalse('upper' in all_keys)
+class KindValidatorTests(TestCase):
+
+ class _Config(Config):
+ var_bool = Variable(kind=bool)
+ var_int = Variable(kind=int)
+ var_float = Variable(kind=float)
+ var_str = Variable(kind=str)
+
+ def test_error_msg(self):
+ """
+ verify that KindValidator() has correct error message for each type
+ """
+ bad_value = object()
+ self.assertEqual(
+ KindValidator(self._Config.var_bool, bad_value),
+ "expected a boolean")
+ self.assertEqual(
+ KindValidator(self._Config.var_int, bad_value),
+ "expected an integer")
+ self.assertEqual(
+ KindValidator(self._Config.var_float, bad_value),
+ "expected a floating point number")
+ self.assertEqual(
+ KindValidator(self._Config.var_str, bad_value),
+ "expected a string")
+
+
class PatternValidatorTests(TestCase):
class _Config(Config):
--
1.9.0
References