summaryrefslogtreecommitdiff
path: root/git/test
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2015-09-06 15:11:54 +0200
committerSebastian Thiel <byronimo@gmail.com>2015-09-06 15:11:54 +0200
commit074842accb51b2a0c2c1193018d9f374ac5e948f (patch)
treefcb08fd49fe7e239e5defbb1de277054fe7b94f2 /git/test
parent7f8d9ca08352a28cba3b01e4340a24edc33e13e8 (diff)
downloadgitpython-074842accb51b2a0c2c1193018d9f374ac5e948f.tar.gz
fix(config): ignore empty values in config file
Similar to git, we now ignore options which have no value. Previously it would not handle it consistently, and throw a parsing error the first time the cache was built. Afterwards, it was fully usable though. Now we specifically check for the case of no-value options instead. Closes #349
Diffstat (limited to 'git/test')
-rw-r--r--git/test/fixtures/git_config_with_empty_value4
-rw-r--r--git/test/test_config.py7
2 files changed, 11 insertions, 0 deletions
diff --git a/git/test/fixtures/git_config_with_empty_value b/git/test/fixtures/git_config_with_empty_value
new file mode 100644
index 00000000..0427caea
--- /dev/null
+++ b/git/test/fixtures/git_config_with_empty_value
@@ -0,0 +1,4 @@
+[color]
+ ui
+[core]
+ filemode = true \ No newline at end of file
diff --git a/git/test/test_config.py b/git/test/test_config.py
index 7758a094..22f342aa 100644
--- a/git/test/test_config.py
+++ b/git/test/test_config.py
@@ -210,3 +210,10 @@ class TestBase(TestCase):
self.assertEqual(w_config.get('alias', 'rbi'), '"!g() { git rebase -i origin/${1:-master} ; } ; g"')
w_config.release()
self.assertEqual(file_obj.getvalue(), self._to_memcache(fixture_path('.gitconfig')).getvalue())
+
+ def test_empty_config_value(self):
+ cr = GitConfigParser(fixture_path('git_config_with_empty_value'), read_only=True)
+
+ assert cr.get_value('core', 'filemode'), "Should read keys with values"
+
+ self.failUnlessRaises(cp.NoOptionError, cr.get_value, 'color', 'ui')