|
@@ -27,6 +27,7 @@ import shutil
|
|
|
import tempfile
|
|
|
|
|
|
from dulwich.tests import TestCase
|
|
|
+from dulwich.tests.utils import build_commit_graph
|
|
|
|
|
|
from dulwich.merge import merge, find_merge_base
|
|
|
from dulwich.repo import Repo
|
|
@@ -57,5 +58,28 @@ class MergeTests(TestCase):
|
|
|
cid1 = self._add_file(self.repo1, 'b')
|
|
|
cid2 = self._add_file(self.repo2, 'c')
|
|
|
self.repo2.fetch(self.repo1)
|
|
|
+ self.assertEqual(cid1, self.repo1.head())
|
|
|
+ conflicts = merge(self.repo1, [cid2])
|
|
|
+ self.assertEqual([], conflicts)
|
|
|
+
|
|
|
+
|
|
|
+class FindMergeBaseTests(TestCase):
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ super(FindMergeBaseTests, self).setUp()
|
|
|
+ self.test_dir = tempfile.mkdtemp()
|
|
|
+ self.addCleanup(shutil.rmtree, self.test_dir)
|
|
|
+ self.repo = Repo.init(self.test_dir)
|
|
|
+ self.addCleanup(self.repo.close)
|
|
|
+
|
|
|
+ def test_both_adds(self):
|
|
|
+ c1, c2, c3 = build_commit_graph(
|
|
|
+ self.repo.object_store, [[1], [2, 1], [3, 1]])
|
|
|
+ self.assertEqual(
|
|
|
+ c1.id, find_merge_base(self.repo.object_store, [c2.id, c3.id]))
|
|
|
+
|
|
|
+ def test_fast_forward(self):
|
|
|
+ c1, c2, c3 = build_commit_graph(
|
|
|
+ self.repo.object_store, [[1], [2, 1], [3, 2]])
|
|
|
self.assertEqual(
|
|
|
- self.common_cid, find_merge_base(self.repo1, [cid1, cid2]))
|
|
|
+ c2.id, find_merge_base(self.repo.object_store, [c2.id, c3.id]))
|