Skip to content

Commit df8c1d1

Browse files
committed
Review config multivar tests
1 parent 0810e65 commit df8c1d1

File tree

2 files changed

+45
-57
lines changed

2 files changed

+45
-57
lines changed

pygit2/config.py

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@
3131
from .utils import to_bytes
3232

3333

34-
def assert_string(v, desc):
35-
if not isinstance(v, str):
36-
raise TypeError("%s must be a string" % desc)
34+
def str_to_bytes(value, name):
35+
if not isinstance(value, str):
36+
raise TypeError(f'{name} must be a string')
37+
38+
return to_bytes(value)
3739

3840

3941
class ConfigIterator:
@@ -78,8 +80,8 @@ def __init__(self, path=None):
7880
if not path:
7981
err = C.git_config_new(cconfig)
8082
else:
81-
assert_string(path, "path")
82-
err = C.git_config_open_ondisk(cconfig, to_bytes(path))
83+
path = str_to_bytes(path, "path")
84+
err = C.git_config_open_ondisk(cconfig, path)
8385

8486
check_error(err, io=True)
8587
self._config = cconfig[0]
@@ -99,10 +101,10 @@ def __del__(self):
99101
pass
100102

101103
def _get(self, key):
102-
assert_string(key, "key")
104+
key = str_to_bytes(key, "key")
103105

104106
entry = ffi.new('git_config_entry **')
105-
err = C.git_config_get_entry(entry, self._config, to_bytes(key))
107+
err = C.git_config_get_entry(entry, self._config, key)
106108

107109
return err, ConfigEntry._from_c(entry[0])
108110

@@ -136,23 +138,22 @@ def __getitem__(self, key):
136138
return entry.value
137139

138140
def __setitem__(self, key, value):
139-
assert_string(key, "key")
141+
key = str_to_bytes(key, "key")
140142

141143
err = 0
142144
if isinstance(value, bool):
143-
err = C.git_config_set_bool(self._config, to_bytes(key), value)
145+
err = C.git_config_set_bool(self._config, key, value)
144146
elif isinstance(value, int):
145-
err = C.git_config_set_int64(self._config, to_bytes(key), value)
147+
err = C.git_config_set_int64(self._config, key, value)
146148
else:
147-
err = C.git_config_set_string(self._config, to_bytes(key),
148-
to_bytes(value))
149+
err = C.git_config_set_string(self._config, key, to_bytes(value))
149150

150151
check_error(err)
151152

152153
def __delitem__(self, key):
153-
assert_string(key, "key")
154+
key = str_to_bytes(key, "key")
154155

155-
err = C.git_config_delete_entry(self._config, to_bytes(key))
156+
err = C.git_config_delete_entry(self._config, key)
156157
check_error(err)
157158

158159
def __iter__(self):
@@ -174,11 +175,10 @@ def get_multivar(self, name, regex=None):
174175
The optional ''regex'' parameter is expected to be a regular expression
175176
to filter the variables we're interested in.
176177
"""
177-
assert_string(name, "name")
178+
name = str_to_bytes(name, "name")
178179

179180
citer = ffi.new('git_config_iterator **')
180-
err = C.git_config_multivar_iterator_new(citer, self._config,
181-
to_bytes(name),
181+
err = C.git_config_multivar_iterator_new(citer, self._config, name,
182182
to_bytes(regex))
183183
check_error(err)
184184

@@ -188,23 +188,21 @@ def set_multivar(self, name, regex, value):
188188
"""Set a multivar ''name'' to ''value''. ''regexp'' is a regular
189189
expression to indicate which values to replace.
190190
"""
191-
assert_string(name, "name")
192-
assert_string(regex, "regex")
193-
assert_string(value, "value")
191+
name = str_to_bytes(name, "name")
192+
regex = str_to_bytes(regex, "regex")
193+
value = str_to_bytes(value, "value")
194194

195-
err = C.git_config_set_multivar(self._config, to_bytes(name),
196-
to_bytes(regex), to_bytes(value))
195+
err = C.git_config_set_multivar(self._config, name, regex, value)
197196
check_error(err)
198197

199198
def delete_multivar(self, name, regex):
200199
"""Delete a multivar ''name''. ''regexp'' is a regular expression to
201200
indicate which values to delete.
202201
"""
203-
assert_string(name, "name")
204-
assert_string(regex, "regex")
202+
name = str_to_bytes(name, "name")
203+
regex = str_to_bytes(regex, "regex")
205204

206-
err = C.git_config_delete_multivar(self._config, to_bytes(name),
207-
to_bytes(regex))
205+
err = C.git_config_delete_multivar(self._config, name, regex)
208206
check_error(err)
209207

210208
def get_bool(self, key):

test/test_config.py

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -78,26 +78,22 @@ def test_new():
7878
assert config_read['core.editor'] == 'ed'
7979

8080
def test_add():
81-
config = Config()
82-
83-
new_file = open(CONFIG_FILENAME, "w")
84-
new_file.write("[this]\n\tthat = true\n")
85-
new_file.write("[something \"other\"]\n\there = false")
86-
new_file.close()
81+
with open(CONFIG_FILENAME, "w") as new_file:
82+
new_file.write("[this]\n\tthat = true\n")
83+
new_file.write("[something \"other\"]\n\there = false")
8784

85+
config = Config()
8886
config.add_file(CONFIG_FILENAME, 0)
8987
assert 'this.that' in config
9088
assert config.get_bool('this.that')
9189
assert 'something.other.here' in config
9290
assert not config.get_bool('something.other.here')
9391

9492
def test_add_aspath():
95-
config = Config()
96-
97-
new_file = open(CONFIG_FILENAME, "w")
98-
new_file.write("[this]\n\tthat = true\n")
99-
new_file.close()
93+
with open(CONFIG_FILENAME, "w") as new_file:
94+
new_file.write("[this]\n\tthat = true\n")
10095

96+
config = Config()
10197
config.add_file(Path(CONFIG_FILENAME), 0)
10298
assert 'this.that' in config
10399

@@ -116,17 +112,6 @@ def test_read(config):
116112
assert 'core.repositoryformatversion' in config
117113
assert config.get_int('core.repositoryformatversion') == 0
118114

119-
new_file = open(CONFIG_FILENAME, "w")
120-
new_file.write("[this]\n\tthat = foobar\n\tthat = foobeer\n")
121-
new_file.close()
122-
123-
config.add_file(CONFIG_FILENAME, 0)
124-
assert 'this.that' in config
125-
126-
assert 2 == len(list(config.get_multivar('this.that')))
127-
l = list(config.get_multivar('this.that', 'bar'))
128-
assert 1 == len(l)
129-
assert l[0] == 'foobar'
130115

131116
def test_write(config):
132117
with pytest.raises(TypeError):
@@ -154,12 +139,19 @@ def test_write(config):
154139
del config['core.dummy3']
155140
assert 'core.dummy3' not in config
156141

157-
new_file = open(CONFIG_FILENAME, "w")
158-
new_file.write("[this]\n\tthat = foobar\n\tthat = foobeer\n")
159-
new_file.close()
142+
def test_multivar():
143+
with open(CONFIG_FILENAME, "w") as new_file:
144+
new_file.write("[this]\n\tthat = foobar\n\tthat = foobeer\n")
160145

146+
config = Config()
161147
config.add_file(CONFIG_FILENAME, 6)
162148
assert 'this.that' in config
149+
150+
assert 2 == len(list(config.get_multivar('this.that')))
151+
l = list(config.get_multivar('this.that', 'bar'))
152+
assert 1 == len(l)
153+
assert l[0] == 'foobar'
154+
163155
l = config.get_multivar('this.that', 'foo.*')
164156
assert 2 == len(list(l))
165157

@@ -169,14 +161,12 @@ def test_write(config):
169161
assert l[0] == 'fool'
170162

171163
config.set_multivar('this.that', 'foo.*', 'foo-123456')
172-
l = config.get_multivar('this.that', 'foo.*')
173-
assert 2 == len(list(l))
174-
for i in l:
175-
assert i == 'foo-123456'
164+
l = list(config.get_multivar('this.that', 'foo.*'))
165+
assert ['foo-123456', 'foo-123456'] == l
176166

177167
config.delete_multivar('this.that', 'bar')
178-
l = config.get_multivar('this.that', '')
179-
assert 2 == len(list(l))
168+
l = list(config.get_multivar('this.that', ''))
169+
assert 2 == len(l)
180170

181171
config.delete_multivar('this.that', r'foo-\d+')
182172
l = config.get_multivar('this.that', '')

0 commit comments

Comments
 (0)