summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/git/test_commit.py19
-rw-r--r--test/git/test_performance.py25
2 files changed, 36 insertions, 8 deletions
diff --git a/test/git/test_commit.py b/test/git/test_commit.py
index 0c05ba50..bb2b22ee 100644
--- a/test/git/test_commit.py
+++ b/test/git/test_commit.py
@@ -50,17 +50,27 @@ class TestCommit(TestBase):
def test_traversal(self):
start = self.rorepo.commit("a4d06724202afccd2b5c54f81bcf2bf26dea7fff")
+ first = self.rorepo.commit("33ebe7acec14b25c5f84f35a664803fcab2f7781")
p0 = start.parents[0]
p1 = start.parents[1]
p00 = p0.parents[0]
+ p10 = p1.parents[0]
# basic branch first, depth first
dfirst = start.traverse(branch_first=False)
- bfirts = start.traverse(branch_first=True)
+ bfirst = start.traverse(branch_first=True)
assert dfirst.next() == p0
assert dfirst.next() == p00
- assert bfirts.next() == p0
- assert bfirts.next() == p1
+
+ assert bfirst.next() == p0
+ assert bfirst.next() == p1
+ assert bfirst.next() == p00
+ assert bfirst.next() == p10
+
+ # at some point, both iterations should stop
+ assert list(dfirst)[-1] == first
+ assert list(bfirst)[-1] == first
+
# ignore self
assert start.traverse(ignore_self=False).next() == start
@@ -74,6 +84,9 @@ class TestCommit(TestBase):
# predicate
assert start.traverse(branch_first=1, predicate=lambda i,d: i==p1).next() == p1
+ # traversal should stop when the beginning is reached
+ self.failUnlessRaises(StopIteration, first.traverse().next)
+
@patch_object(Git, '_call_process')
def test_rev_list_bisect_all(self, git):
"""
diff --git a/test/git/test_performance.py b/test/git/test_performance.py
index 83d4a91e..5081bce8 100644
--- a/test/git/test_performance.py
+++ b/test/git/test_performance.py
@@ -10,6 +10,13 @@ from time import time
class TestPerformance(TestBase):
+ def _query_commit_info(self, c):
+ c.author
+ c.authored_date
+ c.committer
+ c.committed_date
+ c.message
+
def test_iteration(self):
num_objs = 0
num_commits = 0
@@ -21,11 +28,7 @@ class TestPerformance(TestBase):
st = time()
for c in self.rorepo.iter_commits('0.1.6'):
num_commits += 1
- c.author
- c.authored_date
- c.committer
- c.committed_date
- c.message
+ self._query_commit_info(c)
for obj in c.tree.traverse():
obj.size
num_objs += 1
@@ -34,3 +37,15 @@ class TestPerformance(TestBase):
elapsed_time = time() - st
print "Traversed %i Trees and a total of %i unchached objects in %s [s] ( %f objs/s )" % (num_commits, num_objs, elapsed_time, num_objs/elapsed_time)
+ def test_commit_traversal(self):
+ num_commits = 0
+
+ st = time()
+ for c in self.rorepo.commit('0.1.6').traverse(branch_first=False):
+ num_commits += 1
+ #if c.message == "initial project":
+ # raise "stop"
+ self._query_commit_info(c)
+ # END for each traversed commit
+ elapsed_time = time() - st
+ print "Traversed %i Commits in %s [s] ( %f objs/s )" % (num_commits, elapsed_time, num_commits/elapsed_time)