From bb4c5f00d7c03e26936002aac8d6773f9f3cc631 Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Sat, 29 Aug 2020 16:52:52 -0500 Subject: [PATCH] Values that won't parse as a boolean are not boolean --- src/pgwui_server/__init__.py | 5 ++++- tests/test___init__.py | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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') -- 2.34.1