فهرست منبع

Merge fix to prevent rraising ValueError for correct refs in RefContainer.__delitem__.

Jelmer Vernooij 14 سال پیش
والد
کامیت
68e2b4bca4
3فایلهای تغییر یافته به همراه15 افزوده شده و 1 حذف شده
  1. 2 0
      NEWS
  2. 2 1
      dulwich/repo.py
  3. 11 0
      dulwich/tests/test_repository.py

+ 2 - 0
NEWS

@@ -13,6 +13,8 @@
 
   * Fix compilation on newer versions of Mac OS X (Lion and up). (Ryan McKern, #794543)
 
+  * Prevent raising ValueError for correct refs in RefContainer.__delitem__.
+
  API CHANGES
 
   * write_pack no longer takes the num_objects argument and requires an object

+ 2 - 1
dulwich/repo.py

@@ -1028,7 +1028,8 @@ class BaseRepo(object):
     def __delitem__(self, name):
         if name.startswith("refs") or name == "HEAD":
             del self.refs[name]
-        raise ValueError(name)
+        else:
+            raise ValueError(name)
 
     def do_commit(self, message, committer=None,
                   author=None, commit_timestamp=None,

+ 11 - 0
dulwich/tests/test_repository.py

@@ -123,6 +123,17 @@ class RepositoryTests(TestCase):
         self.assertEquals('a90fa2d900a17e99b433217e988c4eb4a2e9a097',
                           r["refs/tags/foo"].id)
 
+    def test_delitem(self):
+        r = self._repo = open_repo('a.git')
+
+        del r['refs/heads/master']
+        self.assertRaises(KeyError, lambda: r['refs/heads/master'])
+
+        del r['HEAD']
+        self.assertRaises(KeyError, lambda: r['HEAD'])
+
+        self.assertRaises(ValueError, r.__delitem__, 'notrefs/foo')
+
     def test_get_refs(self):
         r = self._repo = open_repo('a.git')
         self.assertEqual({