summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorholger krekel <holger@merlinux.eu>2010-07-14 22:20:37 +0200
committerholger krekel <holger@merlinux.eu>2010-07-14 22:20:37 +0200
commit1f7c621fb906e18ddf3bb3d082aa66db6df54c05 (patch)
treecab4b36b9aa004132d1bb4bd30951a0e174b436d
parent4772a65fdf3a7e28ad5573e76eb485e3998d8088 (diff)
downloadtox-1f7c621fb906e18ddf3bb3d082aa66db6df54c05.tar.gz
only allow True or False on boolean config values
-rw-r--r--CHANGELOG.txt3
-rw-r--r--tests/test_config.py6
-rw-r--r--tox/_config.py8
3 files changed, 16 insertions, 1 deletions
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 736353b..6e58f33 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -15,6 +15,9 @@
- added unittest2 examples contributed by Michael Foord
+- only allow 'True' or 'False' for boolean config values
+ (lowercase / uppercase is irrelevant)
+
0.6
-----------------
diff --git a/tests/test_config.py b/tests/test_config.py
index 9b30cd6..160270f 100644
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -215,11 +215,17 @@ class TestIniParser:
[section]
key1=True
key2=False
+ key1a=true
+ key2a=falsE
+ key5=yes
""")
reader = IniReader(config._cfg)
assert reader.getbool("section", "key1") == True
+ assert reader.getbool("section", "key1a") == True
assert reader.getbool("section", "key2") == False
+ assert reader.getbool("section", "key2a") == False
py.test.raises(KeyError, 'reader.getbool("section", "key3")')
+ py.test.raises(tox.exception.ConfigError, 'reader.getbool("section", "key5")')
class TestConfigTestEnv:
def test_defaults(self, tmpdir, newconfig):
diff --git a/tox/_config.py b/tox/_config.py
index 0cdadd6..8dc53a7 100644
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -272,7 +272,13 @@ class IniReader:
raise KeyError("no config value [%s] %s found" % (
section, name))
if not isinstance(s, bool):
- s = (s == "True" and True or False)
+ if s.lower() == "true":
+ s = True
+ elif s.lower() == "false":
+ s = False
+ else:
+ raise tox.exception.ConfigError(
+ "boolean value %r needs to be 'True' or 'False'")
return s
def getdefault(self, section, name, default=None, replace=True):