Fix error parsing a non-existant configuration file

If a file (e.g. ~/.gitconfig) does not exist, we get None
here rather than a string.  NoneType lacks rstrip() so we
cannot strip it.

Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
Shawn O. Pearce 2009-07-02 16:12:57 -07:00
parent 2d1a396897
commit c24c720b61
2 changed files with 13 additions and 2 deletions

View File

@ -265,9 +265,11 @@ class GitConfig(object):
This internal method populates the GitConfig cache. This internal method populates the GitConfig cache.
""" """
d = self._do('--null', '--list').rstrip('\0')
c = {} c = {}
for line in d.split('\0'): d = self._do('--null', '--list')
if d is None:
return c
for line in d.rstrip('\0').split('\0'):
if '\n' in line: if '\n' in line:
key, val = line.split('\n', 1) key, val = line.split('\n', 1)
else: else:

View File

@ -39,5 +39,14 @@ class GitConfigUnitTest(unittest.TestCase):
val = self.config.GetString('section.nonempty') val = self.config.GetString('section.nonempty')
self.assertEqual(val, 'true') self.assertEqual(val, 'true')
def test_GetString_from_missing_file(self):
"""
Test missing config file
"""
config_fixture = fixture('not.present.gitconfig')
config = git_config.GitConfig(config_fixture)
val = config.GetString('empty')
self.assertEqual(val, None)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()