annotate tests/test-push-checkheads-pruned-B2.t @ 41163:0101a35deae2

phabricator: warn if unable to amend, instead of aborting after posting There was a divergence in behavior here between obsolete and strip based amending. I first noticed the abort when testing outside of the test harness, but then had trouble recreating it here after reverting the code changes. It turns out, strip based amend was successfully amending the public commit after it was posted! It looks like the protection is in the `commit --amend` command, not in the underlying code that it calls. I considered doing a preflight check and aborting. But the locks are only acquired at the end, if amending, and this is too large a section of code to be wrapped in a maybe-it's-held-or-not context manager for my tastes. Additionally, some people do post-push reviews, and amending is the default behavior, so they shouldn't see a misleading error message. The lack of a 'Differential Revision' entry in the commit message breaks a {phabreview} test, so it had to be partially conditionalized.
author Matt Harbison <matt_harbison@yahoo.com>
date Sat, 05 Jan 2019 15:20:33 -0500
parents 89630d0b3e23
children 34a46d48d24e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32010
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
1 ====================================
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
2 Testing head checking code: Case B-2
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
3 ====================================
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
4
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
5 Mercurial checks for the introduction of new heads on push. Evolution comes
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
6 into play to detect if existing branches on the server are being replaced by
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
7 some of the new one we push.
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
8
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
9 This case is part of a series of tests checking this behavior.
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
10
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
11 Category B: simple case involving pruned changesets
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
12 TestCase 2: multi-changeset branch, head is pruned, rest is superceeded
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
13
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
14 .. old-state:
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
15 ..
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
16 .. * 2 changeset branch
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
17 ..
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
18 .. new-state:
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
19 ..
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
20 .. * old head is pruned
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
21 .. * 1 new branch succeeding to the other changeset in the old branch
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
22 ..
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
23 .. expected-result:
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
24 ..
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
25 .. * push allowed
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
26 ..
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
27 .. graph-summary:
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
28 ..
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
29 .. B ⊗
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
30 .. |
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
31 .. A ø⇠◔ A'
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
32 .. |/
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
33 .. ●
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
34
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
35 $ . $TESTDIR/testlib/push-checkheads-util.sh
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
36
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
37 Test setup
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
38 ----------
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
39
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
40 $ mkdir B2
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
41 $ cd B2
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
42 $ setuprepos
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
43 creating basic server and client repo
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
44 updating to branch default
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
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
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
46 $ cd server
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
47 $ mkcommit B0
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
48 $ cd ../client
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
49 $ hg pull
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
50 pulling from $TESTTMP/B2/server
32010
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
51 searching for changes
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
52 adding changesets
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
53 adding manifests
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
54 adding file changes
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
55 added 1 changesets with 1 changes to 1 files
39480
89630d0b3e23 phase: report number of non-public changeset alongside the new range
Boris Feld <boris.feld@octobus.net>
parents: 35709
diff changeset
56 new changesets d73caddc5533 (1 drafts)
32010
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
57 (run 'hg update' to get a working copy)
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
58 $ hg up 0
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
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
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
60 $ mkcommit A1
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
61 created new head
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
62 $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 33252
diff changeset
63 obsoleted 1 changesets
35709
1a09dad8b85a evolution: report new unstable changesets
Martin von Zweigbergk <martinvonz@google.com>
parents: 35393
diff changeset
64 1 new orphan changesets
32010
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
65 $ hg debugobsolete --record-parents `getid "desc(B0)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 33252
diff changeset
66 obsoleted 1 changesets
32010
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
67 $ hg log -G --hidden
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
68 @ f6082bc4ffef (draft): A1
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
69 |
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
70 | x d73caddc5533 (draft): B0
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
71 | |
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
72 | x 8aaa48160adc (draft): A0
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
73 |/
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
74 o 1e4be0697311 (public): root
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
75
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
76
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
77 Actual testing
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
78 --------------
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
79
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
80 $ hg push
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
81 pushing to $TESTTMP/B2/server
32010
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
82 searching for changes
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
83 adding changesets
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
84 adding manifests
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
85 adding file changes
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
86 added 1 changesets with 1 changes to 1 files (+1 heads)
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
87 2 new obsolescence markers
33252
53b3a1968aa6 obsolete: reports the number of local changeset obsoleted when unbundling
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32010
diff changeset
88 obsoleted 2 changesets
32010
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
89
5622614e911c obsolescence: add test for the "branch replacement" logic during push, case B2
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
90 $ cd ../..