|
@@ -26,6 +26,9 @@ from dulwich.diff_tree import (
|
|
|
TreeChange,
|
|
|
RenameDetector,
|
|
|
)
|
|
|
+from dulwich.errors import (
|
|
|
+ MissingCommitError,
|
|
|
+ )
|
|
|
from dulwich.object_store import (
|
|
|
MemoryObjectStore,
|
|
|
)
|
|
@@ -98,6 +101,25 @@ class WalkerTest(TestCase):
|
|
|
self.assertWalkYields([c3, c2], [c3.id, c1.id], exclude=[c1.id])
|
|
|
self.assertWalkYields([c3], [c3.id, c1.id], exclude=[c2.id])
|
|
|
|
|
|
+ def assertNextFails(self, walk_iter, missing_sha):
|
|
|
+ try:
|
|
|
+ next(walk_iter)
|
|
|
+ self.fail('Failed to error on missing sha %s' % missing_sha)
|
|
|
+ except MissingCommitError, e:
|
|
|
+ self.assertEqual(missing_sha, e.sha)
|
|
|
+
|
|
|
+ def test_missing(self):
|
|
|
+ c1, c2, c3 = self.make_linear_commits(3)
|
|
|
+ self.assertWalkYields([c3, c2, c1], [c3.id])
|
|
|
+
|
|
|
+ del self.store[c1.id]
|
|
|
+ self.assertWalkYields([c3], [c3.id], max_entries=1)
|
|
|
+ walk_iter = iter(Walker(self.store, [c3.id]))
|
|
|
+ self.assertEqual(TestWalkEntry(c3, None), next(walk_iter))
|
|
|
+ self.assertNextFails(walk_iter, c1.id)
|
|
|
+ self.assertNextFails(iter(Walker(self.store, [c2.id])), c1.id)
|
|
|
+ self.assertRaises(MissingCommitError, Walker, self.store, c1.id)
|
|
|
+
|
|
|
def test_branch(self):
|
|
|
c1, x2, x3, y4 = self.make_commits([[1], [2, 1], [3, 2], [4, 1]])
|
|
|
self.assertWalkYields([x3, x2, c1], [x3.id])
|