diff options
-rw-r--r-- | test/git/test_commit.py | 19 | ||||
-rw-r--r-- | test/git/test_performance.py | 25 |
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) |