From 05d6351686bfa34738ab2beedef43a049ef33337 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Thu, 5 Oct 2017 18:01:45 +0900 Subject: [PATCH] Strip boolean environment variable strings Update tests --- lib/env_base.py | 3 ++- tests/lib/test_env_base.py | 49 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tests/lib/test_env_base.py diff --git a/lib/env_base.py b/lib/env_base.py index cf3cb9b..80f2968 100644 --- a/lib/env_base.py +++ b/lib/env_base.py @@ -30,7 +30,8 @@ class EnvBase(lib_util.LoggedClass): return environ.get(envvar, default) def boolean(self, envvar, default): - return bool(self.default(envvar, default)) + default = 'Yes' if default else '' + return bool(self.default(envvar, default).strip()) def required(self, envvar): value = environ.get(envvar) diff --git a/tests/lib/test_env_base.py b/tests/lib/test_env_base.py new file mode 100644 index 0000000..22a2084 --- /dev/null +++ b/tests/lib/test_env_base.py @@ -0,0 +1,49 @@ +# Tests of server/env.py + +import os + +import pytest + +from lib.env_base import EnvBase + + +os.environ.update({ + 'int': '32', + 'intspace': ' 32 ', + 'true': 'x', + 'false': '', + 'space': ' ', +}) + +def test_default(): + e = EnvBase() + assert e.default('int', '33') == '32' + assert e.default('baz', 'z') == 'z' + +def test_boolean(): + e = EnvBase() + assert e.boolean('true', False) + assert not e.boolean('false', True) + assert not e.boolean('space', True) + assert e.boolean('missing', True) + assert not e.boolean('missing', False) + +def test_required(): + e = EnvBase() + assert e.required('true') == 'x' + with pytest.raises(e.Error): + e.required('missing') + +def test_integer(): + e = EnvBase() + assert e.integer('int', 33) == 32 + assert e.integer('missing', 33) == 33 + assert e.integer('intspace', 33) == 32 + assert e.integer('missing', None) is None + with pytest.raises(e.Error): + e.integer('true', 1) + +def test_obsolete(): + e = EnvBase() + with pytest.raises(e.Error): + e.obsolete(['z', 'space'])