Ver código fonte

Simplify some code, add tests for boolean settings without = sign.

Jelmer Vernooij 13 anos atrás
pai
commit
f7e7fcf6c3
2 arquivos alterados com 12 adições e 10 exclusões
  1. 6 10
      dulwich/config.py
  2. 6 0
      dulwich/tests/test_config.py

+ 6 - 10
dulwich/config.py

@@ -189,10 +189,14 @@ class ConfigFile(ConfigDict):
                         else:
                             section = (pts[0], )
                     ret._values[section] = {}
-                elif "=" in line:
-                    setting, value = line.split("=", 1)
+                else:
                     if section is None:
                         raise ValueError("setting %r without section" % line)
+                    try:
+                        setting, value = line.split("=", 1)
+                    except ValueError:
+                        setting = line
+                        value = "true"
                     setting = setting.strip()
                     if not _check_variable_name(setting):
                         raise ValueError("invalid variable name %s" % setting)
@@ -205,14 +209,6 @@ class ConfigFile(ConfigDict):
                     ret._values[section][setting] = value
                     if not continuation:
                         setting = None
-                else:
-                    setting = line.strip()
-                    if not _check_variable_name(setting):
-                        raise ValueError("invalid variable name %s" % setting)
-                    if section is None:
-                        raise ValueError("setting %r without section" % line)
-                    ret._values[section][setting] = ""
-                    setting = None
             else:
                 if line.endswith("\\\n"):
                     line = line[:-2]

+ 6 - 0
dulwich/tests/test_config.py

@@ -78,6 +78,12 @@ class ConfigFileTests(TestCase):
             ' la\n')
         self.assertEquals("barla", cf.get(("core", ), "foo"))
 
+    def test_from_file_with_boolean_setting(self):
+        cf = self.from_file(
+            "[core]\n"
+            'foo\n')
+        self.assertEquals("true", cf.get(("core", ), "foo"))
+
     def test_from_file_subsection(self):
         cf = self.from_file("[branch \"foo\"]\nfoo = bar\n")
         self.assertEquals("bar", cf.get(("branch", "foo"), "foo"))