Переглянути джерело

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>
Shawn O. Pearce 16 роки тому
батько
коміт
c24c720b61
2 змінених файлів з 13 додано та 2 видалено
  1. 4 2
      git_config.py
  2. 9 0
      tests/test_git_config.py

+ 4 - 2
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:

+ 9 - 0
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()