Browse Source

Add some compat tests for removing refs during push.

Jelmer Vernooij 11 years ago
parent
commit
24338b9dc7
2 changed files with 24 additions and 0 deletions
  1. 2 0
      NEWS
  2. 22 0
      dulwich/tests/compat/server_utils.py

+ 2 - 0
NEWS

@@ -14,6 +14,8 @@
 
   * Enforce determine_wants returning an empty list rather than None. (Fabien Boucher, Jelmer Vernooij)
 
+  * In the server, support pushes just removing refs. (Fabien Boucher, Jelmer Vernooij)
+
  IMPROVEMENTS
 
   * Support passing a single revision to BaseRepo.get_walker() rather than a list of revisions. 

+ 22 - 0
dulwich/tests/compat/server_utils.py

@@ -69,6 +69,28 @@ class ServerTests(object):
                         cwd=self._new_repo.path)
         self.assertReposEqual(self._old_repo, self._new_repo)
 
+    def test_push_to_dulwich_no_op(self):
+        self._old_repo = import_repo('server_old.export')
+        self._new_repo = import_repo('server_old.export')
+        self.assertReposEqual(self._old_repo, self._new_repo)
+        port = self._start_server(self._old_repo)
+
+        run_git_or_fail(['push', self.url(port)] + self.branch_args(),
+                        cwd=self._new_repo.path)
+        self.assertReposEqual(self._old_repo, self._new_repo)
+
+    def test_push_to_dulwich_remove_branch(self):
+        self._old_repo = import_repo('server_old.export')
+        self._new_repo = import_repo('server_old.export')
+        self.assertReposEqual(self._old_repo, self._new_repo)
+        port = self._start_server(self._old_repo)
+
+        run_git_or_fail(['push', self.url(port), ":master"],
+                        cwd=self._new_repo.path)
+
+        self.assertEquals(
+            self._old_repo.get_refs().keys(), ["refs/heads/branch"])
+
     def test_fetch_from_dulwich(self):
         self.import_repos()
         self.assertReposNotEqual(self._old_repo, self._new_repo)