annotate tests/testlib/random-revs.py @ 6224:17ffdea0edbb stable

evolve: look for split successors of the correct ancestor (issue6648) Consider two changesets, 1 and 2. 1 is split into two new changesets and 2 is pruned. If we stand on 2 and call hg evolve, _singlesuccessor() will traverse ancestors of wdp in search of a changeset with successors to update to (it will be 1, which was split). In case of a split, select_split_successor() gets control. The issue is this function didn't traverse ancestors, and instead tried to look up successors of the original changeset (i.e. 2 in our case, which was pruned). We can make select_split_successor() aware of _singlesuccessor() logic by using the changeset that actually has successors without traversing ancestors again. It's done by storing that changeset in MultipleSuccessorsError exception.
author Anton Shestakov <av6@dwimlabs.net>
date Thu, 21 Apr 2022 22:19:27 +0400
parents 11b8f7003713
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5611
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
1 #!/usr/bin/env python
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
2 """
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
3 This simple script outputs a sequence of numbers separated by newlines. The
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
4 amount of numbers and their approximate values can be controlled by two command
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
5 line arguments.
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
6
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
7 Usage: $0 COUNT MAXADD. COUNT will determine the amount of numbers printed, and
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
8 MAXADD will limit the value that will be added to each of those numbers.
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
9 """
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
10
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
11 from __future__ import print_function
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
12
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
13 import random
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
14 import sys
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
15
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
16 def main():
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
17 count = int(sys.argv[1])
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
18 maxadd = int(sys.argv[2])
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
19 for x in range(count):
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
20 print(x + random.randint(0, maxadd))
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
21
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
22 if __name__ == '__main__':
11b8f7003713 tests: move ad-hoc random_rev.py to testlib/random-revs.py
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
23 main()