Skip to content

Commit d78a82d

Browse files
committed
Added test for backslahed/quoted values
1 parent 6e86f8a commit d78a82d

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

git/test/fixtures/git_config_values

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[values]
2+
backslash = some\\data
3+
quote = this is a \"quoted value\"
4+
quoted = "all" "your \"quotes\" a"re bel"ong to """"us"

git/test/test_config.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,28 @@ def test_base(self):
101101
# it raises if there is no default though
102102
self.failUnlessRaises(NoSectionError, r_config.get_value, "doesnt", "exist")
103103

104-
104+
def test_values(self):
105+
file_obj = self._to_memcache(fixture_path("git_config_values"))
106+
w_config = GitConfigParser(file_obj, read_only = False)
107+
w_config.write() # enforce writing
108+
orig_value = file_obj.getvalue()
109+
110+
# Reading must unescape backslashes
111+
backslash = w_config.get('values', 'backslash')
112+
assert backslash == r'some\data'
113+
114+
# Reading must unescape quotes
115+
quote = w_config.get('values', 'quote')
116+
assert quote == 'this is a "quoted value"'
117+
118+
# Reading must remove surrounding quotes
119+
quoted = w_config.get('values', 'quoted')
120+
assert quoted == 'all your "quotes" are belong to us'
121+
122+
# Writing must escape backslashes and quotes
123+
w_config.set('values', 'backslash', backslash)
124+
w_config.set('values', 'quote', quote)
125+
w_config.write() # enforce writing
126+
127+
# Contents shouldn't differ
128+
assert file_obj.getvalue() == orig_value

0 commit comments

Comments
 (0)