Skip to content

Commit 4dd5d45

Browse files
authored
Merge pull request #2035 from betaboon/fix-configparser-quotes
Fix GitConfigParser not removing quotes from values
2 parents c8ebc8b + 67468a2 commit 4dd5d45

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
if len(optval) > 1 and optval[0] == '"' and optval[-1] != '"':
509509
is_multi_line = True
510510
optval = string_decode(optval[1:])
511+
elif len(optval) > 1 and optval[0] == '"' and optval[-1] == '"':
512+
optval = optval[1:-1].strip()
511513
# END handle multi-line
512514
# Preserves multiple values for duplicate optnames.
513515
cursect.add(optname, optval)

test/fixtures/git_config_with_quotes

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+
email = "cveal05@gmail.com"

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
with GitConfigParser(file_obj, read_only=False) as w_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
with self.assertRaises(cp.NoOptionError):
407407
cr.get_value("color", "ui")
408408

409+
def test_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"), "cveal05@gmail.com")
414+
409415
def test_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)