Browse Source

InfoRefsContainer is authoritive - don't return None in get_peeled.

Jelmer Vernooij 13 years ago
parent
commit
07c5cb0fd7
2 changed files with 11 additions and 1 deletions
  1. 4 1
      dulwich/repo.py
  2. 7 0
      dulwich/tests/test_repository.py

+ 4 - 1
dulwich/repo.py

@@ -416,7 +416,10 @@ class InfoRefsContainer(RefsContainer):
         return {}
 
     def get_peeled(self, name):
-        return self._peeled.get(name)
+        try:
+            return self._peeled[name]
+        except KeyError:
+            return self._refs[name]
 
 
 class DiskRefsContainer(RefsContainer):

+ 7 - 0
dulwich/tests/test_repository.py

@@ -938,3 +938,10 @@ class InfoRefsContainerTests(TestCase):
         refs = InfoRefsContainer(StringIO(_TEST_REFS_SERIALIZED))
         self.assertTrue('refs/heads/master' in refs)
         self.assertFalse('refs/heads/bar' in refs)
+
+    def test_get_peeled(self):
+        refs = InfoRefsContainer(StringIO(_TEST_REFS_SERIALIZED))
+        # refs/heads/loop does not show up even if it exists
+        self.assertEqual(
+            _TEST_REFS['refs/heads/master'],
+            refs.get_peeled('refs/heads/master'))