Skip to content

Commit 67468a2

Browse files
committed
Fix GitConfigParser not removing quotes from values
1 parent c8ebc8b commit 67468a2

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

‎git/config.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,8 @@ def string_decode(v: str) -> str:
508508
iflen(optval) >1andoptval[0] =='"'andoptval[-1] !='"':
509509
is_multi_line=True
510510
optval=string_decode(optval[1:])
511+
eliflen(optval) >1andoptval[0] =='"'andoptval[-1] =='"':
512+
optval=optval[1:-1].strip()
511513
# END handle multi-line
512514
# Preserves multiple values for duplicate optnames.
513515
cursect.add(optname, optval)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[user]
2+
name = "Cody Veal"
3+

‎test/test_config.py‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ def test_complex_aliases(self):
391391
withGitConfigParser(file_obj, read_only=False) asw_config:
392392
self.assertEqual(
393393
w_config.get("alias", "rbi"),
394-
'"!g(){git rebase -i origin/${1:-master} } ; g"',
394+
"!g(){git rebase -i origin/${1:-master} } ; g",
395395
)
396396
self.assertEqual(
397397
file_obj.getvalue(),
@@ -406,6 +406,12 @@ def test_empty_config_value(self):
406406
withself.assertRaises(cp.NoOptionError):
407407
cr.get_value("color", "ui")
408408

409+
deftest_config_with_quotes(self):
410+
cr=GitConfigParser(fixture_path("git_config_with_quotes"), read_only=True)
411+
412+
self.assertEqual(cr.get("user", "name"), "Cody Veal")
413+
self.assertEqual(cr.get("user", "email"), "[email protected]")
414+
409415
deftest_get_values_works_without_requiring_any_other_calls_first(self):
410416
file_obj=self._to_memcache(fixture_path("git_config_multiple"))
411417
cr=GitConfigParser(file_obj, read_only=True)

0 commit comments

Comments
(0)