Explorar o código

Implement RefsContainer.__contains__.

Jelmer Vernooij %!s(int64=15) %!d(string=hai) anos
pai
achega
f390bb8f56
Modificáronse 3 ficheiros con 13 adicións e 0 borrados
  1. 2 0
      NEWS
  2. 7 0
      dulwich/repo.py
  3. 4 0
      dulwich/tests/test_repository.py

+ 2 - 0
NEWS

@@ -11,6 +11,8 @@
   * Fix trailing newlines in generated patch files.
     (Jelmer Vernooij)
 
+  * Implement RefsContainer.__contains__. (Jelmer Vernooij)
+
  FEATURES
 
   * Add include-tag capability to server. (Dave Borowitz)

+ 7 - 0
dulwich/repo.py

@@ -228,6 +228,13 @@ class RefsContainer(object):
                 raise KeyError(name)
         return refname, contents
 
+    def __contains__(self, refname):
+        if self.read_loose_ref(refname):
+            return True
+        if self.get_packed_refs().get(refname, None):
+            return True
+        return False
+
     def __getitem__(self, name):
         """Get the SHA1 for a reference name.
 

+ 4 - 0
dulwich/tests/test_repository.py

@@ -422,6 +422,10 @@ class RefsContainerTests(unittest.TestCase):
         self.assertRaises(KeyError, self._refs._follow, 'notrefs/foo')
         self.assertRaises(KeyError, self._refs._follow, 'refs/heads/loop')
 
+    def test_contains(self):
+        self.assertTrue('refs/heads/master' in self._refs)
+        self.assertFalse('refs/heads/bar' in self._refs)
+
     def test_delitem(self):
         self.assertEqual('42d06bd4b77fed026b154d16493e5deab78f02ec',
                           self._refs['refs/heads/master'])