← Back to team overview

checkbox-dev team mailing list archive

[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