Ver Fonte

Add test for pushing of ref deletes.

Jelmer Vernooij há 8 anos atrás
pai
commit
8ab05ebdb4
1 ficheiros alterados com 34 adições e 0 exclusões
  1. 34 0
      dulwich/tests/test_porcelain.py

+ 34 - 0
dulwich/tests/test_porcelain.py

@@ -40,6 +40,7 @@ from dulwich.objects import (
 from dulwich.repo import Repo
 from dulwich.tests import (
     TestCase,
+    expectedFailure,
     )
 from dulwich.tests.utils import (
     build_commit_graph,
@@ -486,6 +487,39 @@ class PushTests(PorcelainTestCase):
             self.assertEqual(os.path.basename(fullpath),
                 change.new.path.decode('ascii'))
 
+    # Deletions don't work yet. #437
+    @expectedFailure
+    def test_delete(self):
+        """Basic test of porcelain push, removing a branch.
+        """
+        outstream = BytesIO()
+        errstream = BytesIO()
+
+        porcelain.commit(repo=self.repo.path, message=b'init',
+            author=b'', committer=b'')
+
+        # Setup target repo cloned from temp test repo
+        clone_path = tempfile.mkdtemp()
+        self.addCleanup(shutil.rmtree, clone_path)
+        target_repo = porcelain.clone(self.repo.path, target=clone_path,
+            errstream=errstream)
+        target_repo.close()
+
+        # Setup a non-checked out branch in the remote
+        refs_path = b"refs/heads/foo"
+        self.repo.refs[refs_path] = self.repo[b'HEAD'].id
+
+        # Push to the remote
+        porcelain.push(clone_path, self.repo.path, b":" + refs_path, outstream=outstream,
+            errstream=errstream)
+
+        with closing(Repo(clone_path)) as r_clone:
+            self.assertEqual({
+                b'HEAD': self.repo[b'HEAD'].id,
+                b'refs/heads/master': self.repo[b'HEAD'].id
+                }, self.repo.get_refs())
+
+
 
 class PullTests(PorcelainTestCase):