Ver código fonte

Provide Config.get_boolean.

Jelmer Vernooij 13 anos atrás
pai
commit
a1b4b45b63
2 arquivos alterados com 18 adições e 3 exclusões
  1. 9 3
      dulwich/config.py
  2. 9 0
      dulwich/tests/test_config.py

+ 9 - 3
dulwich/config.py

@@ -44,15 +44,21 @@ class Config(object):
         """
         raise NotImplementedError(self.get)
 
-    def get_boolean(self, name):
+    def get_boolean(self, section, name):
         """Retrieve a configuration setting as boolean.
 
-        :parma name: Name of the setting, including section and possible
+        :param section: Tuple with section name and optional subsection namee
+        :param name: Name of the setting, including section and possible
             subsection.
         :return: Contents of the setting
         :raise KeyError: if the value is not set
         """
-        return bool(self.get(name))
+        value = self.get(section, name)
+        if value.lower() == "true":
+            return True
+        elif value.lower() == "false":
+            return False
+        raise ValueError("not a valid boolean string: %r" % value)
 
     def set(self, section, name, value):
         """Set a configuration value.

+ 9 - 0
dulwich/tests/test_config.py

@@ -144,6 +144,15 @@ class ConfigDictTests(TestCase):
         cd.set(("core", ), "foo", "bloe")
         self.assertEquals("bloe", cd.get(("core", ), "foo"))
 
+    def test_get_boolean(self):
+        cd = ConfigDict()
+        cd.set(("core", ), "foo", "true")
+        self.assertTrue(cd.get_boolean(("core", ), "foo"))
+        cd.set(("core", ), "foo", "false")
+        self.assertFalse(cd.get_boolean(("core", ), "foo"))
+        cd.set(("core", ), "foo", "invalid")
+        self.assertRaises(ValueError, cd.get_boolean, ("core", ), "foo")
+
 
 class StackedConfigTests(TestCase):