tests/test-push-checkheads-superceed-A4.t
author Jun Wu <quark@fb.com>
Mon, 17 Jul 2017 19:52:50 -0700
changeset 33691 1664406a44d9
parent 33542 b11e8c67fb0f
child 35393 4441705b7111
permissions -rw-r--r--
phabricator: use Phabricator's last node information This makes it more strict when checking whether or not we should update a Differential Revision. For example, a) Alice updates D1 to content 1. b) Bob updates D1 to content 2. c) Alice tries to update D1 to content 1. Previously, `c)` will do nothing because `phabsend` detects the patch is not changed. A more correct behavior is to override Bob's update here, hence the patch. This also makes it possible to return a reaonsable "last node" when there is no tags but only `Differential Revision` commit messages. Test Plan: ``` for i in A B C; do echo $i > $i; hg ci -m $i -A $i; done hg phabsend 0:: # D40: created # D41: created # D42: created echo 3 >> C; hg amend; hg phabsend . # D42: updated hg tag --local --hidden -r 2 -f D42 # move tag to the previous version hg phabsend . # D42: skipped (previously it would be "updated") rm -rf .hg; hg init hg phabread --stack D42 | hg import - hg phabsend . # D42: updated hg tag --local --remove D42 hg commit --amend hg phabsend . # D42: updated (no new diff uploaded, previously it will upload a new diff) ``` The old diff object is now returned, which could be useful in the next patch. Differential Revision: https://phab.mercurial-scm.org/D121
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31977
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     1
====================================
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     2
Testing head checking code: Case A-4
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     3
====================================
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     4
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
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
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
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
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     7
some of the new one we push.
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     8
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
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.
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    10
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    11
Category A: simple case involving a branch being superceeded by another.
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    12
TestCase 4: New changeset as children of the successor
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    13
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    14
.. old-state:
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    15
..
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    16
.. * 1-changeset branch
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    17
..
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    18
.. new-state:
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    19
..
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    20
.. * 2-changeset branch, first is a successor, but head is new
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    21
..
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    22
.. expected-result:
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    23
..
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    24
.. * push allowed
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    25
..
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    26
.. graph-summary:
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    27
..
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    28
..       ◔ B
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    29
..       |
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    30
..   A ø⇠◔ A'
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    31
..     |/
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    32
..     ●
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    33
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    34
  $ . $TESTDIR/testlib/push-checkheads-util.sh
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    35
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    36
Test setup
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    37
----------
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    38
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    39
  $ mkdir A4
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    40
  $ cd A4
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    41
  $ setuprepos
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    42
  creating basic server and client repo
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    43
  updating to branch default
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    44
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    45
  $ cd client
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    46
  $ hg up 0
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    47
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    48
  $ mkcommit A1
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    49
  created new head
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    50
  $ 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
    51
  obsoleted 1 changesets
31977
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    52
  $ mkcommit B0
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    53
  $ hg log -G --hidden
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    54
  @  f40ded968333 (draft): B0
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    55
  |
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    56
  o  f6082bc4ffef (draft): A1
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    57
  |
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    58
  | x  8aaa48160adc (draft): A0
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    59
  |/
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    60
  o  1e4be0697311 (public): root
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    61
  
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    62
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    63
Actual testing
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    64
--------------
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    65
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    66
  $ hg push
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    67
  pushing to $TESTTMP/A4/server (glob)
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    68
  searching for changes
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    69
  adding changesets
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    70
  adding manifests
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    71
  adding file changes
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    72
  added 2 changesets with 2 changes to 2 files (+1 heads)
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    73
  1 new obsolescence markers
33252
53b3a1968aa6 obsolete: reports the number of local changeset obsoleted when unbundling
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 31977
diff changeset
    74
  obsoleted 1 changesets
31977
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    75
e4bd71627903 obsolescence: add test for the "branch replacement" logic during push, case A4
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    76
  $ cd ../../