Values that won't parse as a boolean are not boolean
authorKarl O. Pinc <kop@karlpinc.com>
Sat, 29 Aug 2020 21:52:52 +0000 (16:52 -0500)
committerKarl O. Pinc <kop@karlpinc.com>
Sat, 29 Aug 2020 21:52:52 +0000 (16:52 -0500)
src/pgwui_server/__init__.py
tests/test___init__.py

index 378b141aa87b333b412650253414f9d73eeeca9d..ae802f350ad56c5d7b320e31dd34fe297cdfff2b 100644 (file)
@@ -69,7 +69,10 @@ def require_setting(errors, setting, settings):
 
 def boolean_setting(errors, setting, settings):
     if setting in settings:
-        val = literal_eval(settings[setting])
+        try:
+            val = literal_eval(settings[setting])
+        except ValueError:
+            val = None
         if (val is not True
                 and val is not False):
             errors.append(exceptions.NotBooleanSettingError(
index 8c8f0020226edc07a07c916e4c30358f40187aff..57535cf81d22004b67682ab178a156b243be22bb 100644 (file)
@@ -170,6 +170,17 @@ def test_boolean_setting_notboolean():
     assert isinstance(errors[0], ex.NotBooleanSettingError)
 
 
+def test_boolean_setting_notparsable():
+    '''Deliver an exception when the setting does not evaluate to a
+    boolean because it is not parseable
+    '''
+    errors = []
+    pgwui_server_init.boolean_setting(errors, 'key', {'key': 'a'})
+
+    assert errors
+    assert isinstance(errors[0], ex.NotBooleanSettingError)
+
+
 mock_boolean_setting = testing.make_mock_fixture(
     pgwui_server_init, 'boolean_setting')