"""Reading and writing Git configuration files.
+TODO:
+ * preserve formatting when updating configuration files
+ * treat subsection names as case-insensitive for [branch.foo] style
+ subsections
"""
import errno
raise ValueError("expected trailing ]")
key = line.strip()
pts = key[1:-1].split(" ", 1)
+ pts[0] = pts[0].lower()
if len(pts) == 2:
if pts[1][0] != "\"" or pts[1][-1] != "\"":
raise ValueError(
except ValueError:
setting = line
value = "true"
- setting = setting.strip()
+ setting = setting.strip().lower()
if not _check_variable_name(setting):
raise ValueError("invalid variable name %s" % setting)
if value.endswith("\\\n"):
self.assertEquals("bar", cf.get(("core", ), "foo"))
self.assertEquals("bar", cf.get(("core", "foo"), "foo"))
+ def test_from_file_section_case_insensitive(self):
+ cf = self.from_file("[cOre]\nfOo = bar\n")
+ self.assertEquals("bar", cf.get(("core", ), "foo"))
+ self.assertEquals("bar", cf.get(("core", "foo"), "foo"))
+
def test_from_file_with_mixed_quoted(self):
cf = self.from_file("[core]\nfoo = \"bar\"la\n")
self.assertEquals("barla", cf.get(("core", ), "foo"))