tests/test-push-checkheads-unpushed-D5.t
author Pierre-Yves David <pierre-yves.david@octobus.net>
Sat, 27 May 2017 22:27:09 +0200
changeset 32636 da5cf8cc5aad
parent 32017 9f7ba0daada1
child 33252 53b3a1968aa6
permissions -rw-r--r--
test: add a push race case where the raced push touch multiple heads We check case where the raced push update all heads while the racing push update one of them.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32017
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     1
====================================
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     2
Testing head checking code: Case D-5
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     3
====================================
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     4
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
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
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
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
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     7
some of the new one we push.
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     8
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
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.
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    10
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    11
Category D: remote head is "obs-affected" locally, but result is not part of the push
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    12
TestCase 5: multi-changeset branch, split on multiple other, (head on its own new branch)
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    13
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    14
.. old-state:
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    15
..
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    16
.. * 2 branch (1 changeset, and 2 changesets)
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    17
..
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    18
.. new-state:
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    19
..
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    20
.. * 1 new branch superceeding the head of the old-2-changesets-branch,
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    21
.. * 1 new changesets on the old-1-changeset-branch superceeding the base of the other
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    22
..
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    23
.. expected-result:
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    24
..
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    25
.. * push the new branch only -> push denied
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    26
.. * push the existing branch only -> push allowed
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    27
..   /!\ This push create unstability/orphaning on the other hand and we should
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    28
..  probably detect/warn agains that.
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    29
..
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    30
.. graph-summary:
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    31
..
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    32
..   B ø⇠◔ B'
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    33
..     | |
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    34
.. A'◔⇢ø |
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    35
..   | |/
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    36
.. C ● |
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    37
..    \|
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    38
..     ●
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    39
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    40
  $ . $TESTDIR/testlib/push-checkheads-util.sh
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    41
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    42
Test setup
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    43
----------
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    44
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    45
  $ mkdir D5
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    46
  $ cd D5
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    47
  $ setuprepos
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    48
  creating basic server and client repo
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    49
  updating to branch default
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    50
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    51
  $ cd server
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    52
  $ mkcommit B0
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    53
  $ hg up 0
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    54
  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    55
  $ mkcommit C0
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    56
  created new head
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    57
  $ cd ../client
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    58
  $ hg pull
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    59
  pulling from $TESTTMP/D5/server (glob)
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    60
  searching for changes
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    61
  adding changesets
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    62
  adding manifests
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    63
  adding file changes
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    64
  added 2 changesets with 2 changes to 2 files (+1 heads)
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    65
  (run 'hg heads' to see heads, 'hg merge' to merge)
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    66
  $ hg up 'desc(C0)'
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    67
  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    68
  $ mkcommit A1
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    69
  $ hg up 0
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    70
  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    71
  $ mkcommit B1
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    72
  created new head
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    73
  $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"`
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    74
  $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"`
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    75
  $ hg log -G --hidden
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    76
  @  25c56d33e4c4 (draft): B1
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    77
  |
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    78
  | o  a0802eb7fc1b (draft): A1
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    79
  | |
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    80
  | o  0f88766e02d6 (draft): C0
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    81
  |/
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    82
  | x  d73caddc5533 (draft): B0
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    83
  | |
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    84
  | x  8aaa48160adc (draft): A0
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    85
  |/
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    86
  o  1e4be0697311 (public): root
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    87
  
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    88
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    89
Actual testing
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    90
--------------
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    91
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    92
  $ hg push --rev 'desc(B1)'
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    93
  pushing to $TESTTMP/D5/server (glob)
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    94
  searching for changes
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    95
  abort: push creates new remote head 25c56d33e4c4!
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    96
  (merge or see 'hg help push' for details about pushing new heads)
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    97
  [255]
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    98
  $ hg push --rev 'desc(A1)'
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    99
  pushing to $TESTTMP/D5/server (glob)
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   100
  searching for changes
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   101
  adding changesets
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   102
  adding manifests
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   103
  adding file changes
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   104
  added 1 changesets with 1 changes to 1 files
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   105
  1 new obsolescence markers
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   106
9f7ba0daada1 obsolescence: add test for the "branch replacement" logic during push, case D5
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   107
  $ cd ../..