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>
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 @@
     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 @@
         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()