Mercurial > evolve
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 |
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() |