@@ -50,17 +50,27 @@ def check_entries(d):
5050
5151 def test_traversal (self ):
5252 start = self .rorepo .commit ("a4d06724202afccd2b5c54f81bcf2bf26dea7fff" )
53+ first = self .rorepo .commit ("33ebe7acec14b25c5f84f35a664803fcab2f7781" )
5354 p0 = start .parents [0 ]
5455 p1 = start .parents [1 ]
5556 p00 = p0 .parents [0 ]
57+ p10 = p1 .parents [0 ]
5658
5759 # basic branch first, depth first
5860 dfirst = start .traverse (branch_first = False )
59- bfirts = start .traverse (branch_first = True )
61+ bfirst = start .traverse (branch_first = True )
6062 assert dfirst .next () == p0
6163 assert dfirst .next () == p00
62- assert bfirts .next () == p0
63- assert bfirts .next () == p1
64+
65+ assert bfirst .next () == p0
66+ assert bfirst .next () == p1
67+ assert bfirst .next () == p00
68+ assert bfirst .next () == p10
69+
70+ # at some point, both iterations should stop
71+ assert list (dfirst )[- 1 ] == first
72+ assert list (bfirst )[- 1 ] == first
73+
6474
6575 # ignore self
6676 assert start .traverse (ignore_self = False ).next () == start
@@ -74,6 +84,9 @@ def test_traversal(self):
7484 # predicate
7585 assert start .traverse (branch_first = 1 , predicate = lambda i ,d : i == p1 ).next () == p1
7686
87+ # traversal should stop when the beginning is reached
88+ self .failUnlessRaises (StopIteration , first .traverse ().next )
89+
7790 @patch_object (Git , '_call_process' )
7891 def test_rev_list_bisect_all (self , git ):
7992 """
0 commit comments