tests/test-push-checkheads-superceed-A3.t
author Danny Hooper <hooper@google.com>
Tue, 15 Aug 2017 10:15:31 -0700
changeset 33879 6f6c87888b22
parent 33542 b11e8c67fb0f
child 34661 eb586ed5d8ce
permissions -rw-r--r--
log: add a "graphwidth" template variable Wrapping text in templates for 'hg log --graph' can't be done very well, because the template doesn't know how wide the graph drawing is. The edge drawing function needs to know the number of lines in the template output, so we need to also determine how wide that drawing would be before we call the edgefn or evaluate the template. This patch makes edgefn compute the graph width and pass it into the template so that we can do something like this: COLUMNS=10 hg log --graph --template "{fill(desc, termwidth - graphwidth)}" @ a a a a | a a a a | a a a a o a a a |\ a a a | | a a a | | a a a Using extensions to do this would be relatively complicated due to a lack of hooks in this area of the code. In the future it may make sense to have a more generic "textwidth" that tells you how many columns you can expect to fill without causing the terminal to wrap your output. I'm not sure there are other situations to motivate this yet, or if it is entirely feasible. Differential Revision: https://phab.mercurial-scm.org/D360
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31976
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     1
====================================
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     2
Testing head checking code: Case A-3
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     3
====================================
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     4
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
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
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
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
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     7
some of the new one we push.
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     8
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
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.
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    10
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    11
Category A: simple case involving a branch being superceeded by another.
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    12
TestCase 3: multi-changeset branch with reordering
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    13
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    14
Push should be allowed
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    15
.. old-state:
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    16
..
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    17
.. * 2 changeset branch
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    18
..
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    19
.. new-state:
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    20
..
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    21
.. * 2 changeset branch succeeding the old one with reordering
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    22
..
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    23
.. expected-result:
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    24
..
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    25
.. * push allowed
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    26
..
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    27
.. graph-summary:
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    28
..
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    29
..   B ø⇠⇠
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    30
..     | ⇡
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    31
..   A ø⇠⇠⇠○ A'
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    32
..     | ⇡/
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    33
..     | ○ B'
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    34
..     |/
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    35
..     ●
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    36
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    37
  $ . $TESTDIR/testlib/push-checkheads-util.sh
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    38
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    39
Test setup
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    40
----------
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    41
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    42
  $ mkdir A3
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    43
  $ cd A3
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    44
  $ setuprepos
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    45
  creating basic server and client repo
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    46
  updating to branch default
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    47
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    48
  $ cd server
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    49
  $ mkcommit B0
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    50
  $ cd ../client
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    51
  $ hg pull
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    52
  pulling from $TESTTMP/A3/server (glob)
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    53
  searching for changes
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    54
  adding changesets
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    55
  adding manifests
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    56
  adding file changes
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    57
  added 1 changesets with 1 changes to 1 files
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    58
  (run 'hg update' to get a working copy)
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    59
  $ hg up 0
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    60
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    61
  $ mkcommit B1
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    62
  created new head
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    63
  $ mkcommit A1
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    64
  $ 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
    65
  obsoleted 1 changesets
31976
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    66
  $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 33252
diff changeset
    67
  obsoleted 1 changesets
31976
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    68
  $ hg log -G --hidden
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    69
  @  c1c7524e9488 (draft): A1
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    70
  |
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    71
  o  25c56d33e4c4 (draft): B1
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    72
  |
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    73
  | x  d73caddc5533 (draft): B0
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    74
  | |
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    75
  | x  8aaa48160adc (draft): A0
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    76
  |/
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    77
  o  1e4be0697311 (public): root
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    78
  
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    79
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    80
Actual testing
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    81
--------------
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    82
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    83
  $ hg push
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    84
  pushing to $TESTTMP/A3/server (glob)
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    85
  searching for changes
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    86
  adding changesets
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    87
  adding manifests
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    88
  adding file changes
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    89
  added 2 changesets with 2 changes to 2 files (+1 heads)
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    90
  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: 31976
diff changeset
    91
  obsoleted 2 changesets
31976
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    92
e0b6421b2fc5 obsolescence: add test for the "branch replacement" logic during push, case A3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    93
  $ cd ../..