@@ -185,6 +185,35 @@ def test_iterator(config: Config) -> None:
185185 assert lst ['core.bare' ]
186186
187187
188+ def test_valueless_key_iteration () -> None :
189+ # A valueless key (no `= value`) has a NULL value pointer in libgit2.
190+ # Iterating over such entries must not raise a RuntimeError.
191+ with open (CONFIG_FILENAME , 'w' ) as new_file :
192+ new_file .write ('[section]\n \t valuelesskey\n \t normalkey = somevalue\n ' )
193+
194+ config = Config ()
195+ config .add_file (CONFIG_FILENAME , 6 )
196+
197+ entries = {entry .name : entry for entry in config }
198+ assert 'section.valuelesskey' in entries
199+ assert 'section.normalkey' in entries
200+
201+
202+ def test_valueless_key_value () -> None :
203+ # A valueless key must expose value=None and raw_value=None.
204+ with open (CONFIG_FILENAME , 'w' ) as new_file :
205+ new_file .write ('[section]\n \t valuelesskey\n \t normalkey = somevalue\n ' )
206+
207+ config = Config ()
208+ config .add_file (CONFIG_FILENAME , 6 )
209+
210+ entries = {entry .name : entry for entry in config }
211+ assert entries ['section.valuelesskey' ].raw_value is None
212+ assert entries ['section.valuelesskey' ].value is None
213+ assert entries ['section.normalkey' ].raw_value == b'somevalue'
214+ assert entries ['section.normalkey' ].value == 'somevalue'
215+
216+
188217def test_parsing () -> None :
189218 assert Config .parse_bool ('on' )
190219 assert Config .parse_bool ('1' )
0 commit comments