Mercurial > hg
view tests/test-ancestor.py @ 18538:94317c2d53b8
commit: show active bookmark in commit editor helper text
If there is an active bookmark while committing, the bookmark name
will be visible inside the commit message helper, below the branch
name.
This should make easier for the user to detect a mistaken commit
parent, while working for example with a bookmark centric workflow
like topic branches.
The active bookmark is checked to be in the working directory, as
pointed by Kevin Bullock, because otherwise committing would not
advance it. In other words, this would not show the active
bookmark name if the user changed the working tree parents with
'hg debugsetparents', for example.
author | Antonio Zanardo <zanardo@gmail.com> |
---|---|
date | Sat, 02 Feb 2013 15:37:17 -0200 |
parents | f7f8159caad3 |
children | 2fa303619b4d |
line wrap: on
line source
from mercurial import ancestor # graph is a dict of child->parent adjacency lists for this graph: # o 13 # | # | o 12 # | | # | | o 11 # | | |\ # | | | | o 10 # | | | | | # | o---+ | 9 # | | | | | # o | | | | 8 # / / / / # | | o | 7 # | | | | # o---+ | 6 # / / / # | | o 5 # | |/ # | o 4 # | | # o | 3 # | | # | o 2 # |/ # o 1 # | # o 0 graph = {0: [-1], 1: [0], 2: [1], 3: [1], 4: [2], 5: [4], 6: [4], 7: [4], 8: [-1], 9: [6, 7], 10: [5], 11: [3, 7], 12: [9], 13: [8]} pfunc = graph.get class mockchangelog(object): parentrevs = graph.get def runmissingancestors(revs, bases): print "%% ancestors of %s and not of %s" % (revs, bases) print ancestor.missingancestors(revs, bases, pfunc) def test_missingancestors(): # Empty revs runmissingancestors([], [1]) runmissingancestors([], []) # If bases is empty, it's the same as if it were [nullrev] runmissingancestors([12], []) # Trivial case: revs == bases runmissingancestors([0], [0]) runmissingancestors([4, 5, 6], [6, 5, 4]) # With nullrev runmissingancestors([-1], [12]) runmissingancestors([12], [-1]) # 9 is a parent of 12. 7 is a parent of 9, so an ancestor of 12. 6 is an # ancestor of 12 but not of 7. runmissingancestors([12], [9]) runmissingancestors([9], [12]) runmissingancestors([12, 9], [7]) runmissingancestors([7, 6], [12]) # More complex cases runmissingancestors([10], [11, 12]) runmissingancestors([11], [10]) runmissingancestors([11], [10, 12]) runmissingancestors([12], [10]) runmissingancestors([12], [11]) runmissingancestors([10, 11, 12], [13]) runmissingancestors([13], [10, 11, 12]) def genlazyancestors(revs, stoprev=0, inclusive=False): print ("%% lazy ancestor set for %s, stoprev = %s, inclusive = %s" % (revs, stoprev, inclusive)) return ancestor.lazyancestors(mockchangelog, revs, stoprev=stoprev, inclusive=inclusive) def printlazyancestors(s, l): print [n for n in l if n in s] def test_lazyancestors(): # Empty revs s = genlazyancestors([]) printlazyancestors(s, [3, 0, -1]) # Standard example s = genlazyancestors([11, 13]) printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0]) # Including revs s = genlazyancestors([11, 13], inclusive=True) printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0]) # Test with stoprev s = genlazyancestors([11, 13], stoprev=6) printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0]) s = genlazyancestors([11, 13], stoprev=6, inclusive=True) printlazyancestors(s, [11, 13, 7, 9, 8, 3, 6, 4, 1, -1, 0]) if __name__ == '__main__': test_missingancestors() test_lazyancestors()