Mercurial > evolve
annotate tests/test-push-checkheads-partial-C2.t @ 6935:954d7ea5cd67 stable tip
stack: when stack base is obsolete, pick any successor, even if at random
There are situations when s0 is obsolete and we also cannot pick just one
successor for it to use in stack. In such a case, let's pick the "latest"
successor from the first set.
We're assuming that obsutil.successorssets() returns data in the same order (it
should, since it makes sure to sort data internally). Keeping that in mind,
while the successor picked for s0 by this code is not based on any sort of
sophisticated logic, it should nonetheless be the same every time.
This patch is probably not going to completely break anything that was
previously working fine, because the previous behavior was to just abort with
an exception.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Sat, 16 Nov 2024 17:01:02 +0400 |
parents | fc60328270ac |
children | 1328195f76a9 |
rev | line source |
---|---|
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
1 ==================================== |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
2 Testing head checking code: Case C-2 |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
3 ==================================== |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
4 |
2277
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
5 Mercurial checks for the introduction of new heads on push. Evolution comes |
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
6 into play to detect if existing branches on the server are being replaced by |
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
7 some of the new one we push. |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
8 |
2277
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
9 This case is part of a series of tests checking this behavior. |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
10 |
2277
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
11 Category C: case were the branch is only partially obsoleted |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
12 TestCase 2: 2 changeset branch, only the base is rewritten |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
13 |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
14 .. old-state: |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
15 .. |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
16 .. * 2 changeset branch |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
17 .. |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
18 .. new-state: |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
19 .. |
6034
144d10e74757
tests: s/superceed/supersede/g
Anton Shestakov <av6@dwimlabs.net>
parents:
5682
diff
changeset
|
20 .. * 1 new changesets branches superseding only the base of the old one |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
21 .. * The old branch is still alive (base is obsolete, head is alive) |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
22 .. |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
23 .. expected-result: |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
24 .. |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
25 .. * push denied |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
26 .. |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
27 .. graph-summary: |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
28 .. |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
29 .. B ○ |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
30 .. | |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
31 .. A ø⇠◔ A' |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
32 .. |/ |
2277
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
33 .. ● |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
34 |
2277
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
35 $ . $TESTDIR/testlib/push-checkheads-util.sh |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
36 |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
37 Test setup |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
38 ---------- |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
39 |
2277
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
40 $ mkdir C2 |
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
41 $ cd C2 |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
42 $ setuprepos |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
43 creating basic server and client repo |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
44 updating to branch default |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
45 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
46 $ cd server |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
47 $ mkcommit B0 |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
48 $ cd ../client |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
49 $ hg pull |
2277
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
50 pulling from $TESTTMP/C2/server (glob) |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
51 searching for changes |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
52 adding changesets |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
53 adding manifests |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
54 adding file changes |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
55 added 1 changesets with 1 changes to 1 files |
4181
ab3581bc0637
branching: preserve the expected output on default
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4165
diff
changeset
|
56 new changesets d73caddc5533 (1 drafts) |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
57 (run 'hg update' to get a working copy) |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
58 $ hg up 0 |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
59 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
60 $ mkcommit A1 |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
61 created new head |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
62 $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"` |
4871
a8ff17479fb8
branching: preserve test change on stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4860
diff
changeset
|
63 1 new obsolescence markers |
2754
21f06d932231
test: update test output to match b11e8c67fb0f
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2277
diff
changeset
|
64 obsoleted 1 changesets |
3431
2e703ed1c713
evolve: update output for wider reporting of troubled changesets
Martin von Zweigbergk <martinvonz@google.com>
parents:
3417
diff
changeset
|
65 1 new orphan changesets |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
66 $ hg log -G --hidden |
6259
fc60328270ac
tests: add branch to checkheads-related log output
Anton Shestakov <av6@dwimlabs.net>
parents:
6034
diff
changeset
|
67 @ f6082bc4ffef [default] (draft): A1 |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
68 | |
6259
fc60328270ac
tests: add branch to checkheads-related log output
Anton Shestakov <av6@dwimlabs.net>
parents:
6034
diff
changeset
|
69 | * d73caddc5533 [default] (draft): B0 |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
70 | | |
6259
fc60328270ac
tests: add branch to checkheads-related log output
Anton Shestakov <av6@dwimlabs.net>
parents:
6034
diff
changeset
|
71 | x 8aaa48160adc [default] (draft): A0 |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
72 |/ |
6259
fc60328270ac
tests: add branch to checkheads-related log output
Anton Shestakov <av6@dwimlabs.net>
parents:
6034
diff
changeset
|
73 o 1e4be0697311 [default] (public): root |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
74 |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
75 |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
76 Actual testing |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
77 -------------- |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
78 |
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
79 $ hg push --rev 'desc(A1)' |
2277
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
80 pushing to $TESTTMP/C2/server (glob) |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
81 searching for changes |
5672
12c53d7122a7
tests: remove trailing "!" from abort messages
Anton Shestakov <av6@dwimlabs.net>
parents:
4871
diff
changeset
|
82 abort: push creates new remote head f6082bc4ffef |
2249
0ecb9fba6364
checkheads: handle partial obsolescence
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
83 (merge or see 'hg help push' for details about pushing new heads) |
5682
f0d46ffbf1bb
tests: update exit code in case of push failing because it'd create new heads
Anton Shestakov <av6@dwimlabs.net>
parents:
5672
diff
changeset
|
84 [20] |
2277
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
85 |
61d885899466
checkheads: update tests to match the one in core
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2249
diff
changeset
|
86 $ cd ../.. |