From: Karl O. Pinc Date: Sat, 29 Aug 2020 21:52:52 +0000 (-0500) Subject: Values that won't parse as a boolean are not boolean X-Git-Url: https://papio.biology.duke.edu/gitweb/?a=commitdiff_plain;h=bb4c5f00d7c03e26936002aac8d6773f9f3cc631;p=pgwui_server Values that won't parse as a boolean are not boolean --- diff --git a/src/pgwui_server/__init__.py b/src/pgwui_server/__init__.py index 378b141..ae802f3 100644 --- a/src/pgwui_server/__init__.py +++ b/src/pgwui_server/__init__.py @@ -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( diff --git a/tests/test___init__.py b/tests/test___init__.py index 8c8f002..57535cf 100644 --- a/tests/test___init__.py +++ b/tests/test___init__.py @@ -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')