From c24c720b6135a8f7975bf9af265124eee2d464cb Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Thu, 2 Jul 2009 16:12:57 -0700 Subject: [PATCH] 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 --- git_config.py | 6 ++++-- tests/test_git_config.py | 9 +++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/git_config.py b/git_config.py index e658b05..e1e2046 100644 --- a/git_config.py +++ b/git_config.py @@ -265,9 +265,11 @@ class GitConfig(object): This internal method populates the GitConfig cache. """ - d = self._do('--null', '--list').rstrip('\0') 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: key, val = line.split('\n', 1) else: diff --git a/tests/test_git_config.py b/tests/test_git_config.py index d67a8ba..5b1770e 100644 --- a/tests/test_git_config.py +++ b/tests/test_git_config.py @@ -39,5 +39,14 @@ class GitConfigUnitTest(unittest.TestCase): val = self.config.GetString('section.nonempty') 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__': unittest.main()