tests/test-push-checkheads-pruned-B3.t
author Martin von Zweigbergk <martinvonz@google.com>
Wed, 20 Feb 2019 15:39:01 -0800
changeset 41751 4ec0ce0fb929
parent 39480 89630d0b3e23
child 42893 34a46d48d24e
permissions -rw-r--r--
tests: add tests of pathcopies() I'm working on support for storing copy metadata in the changeset instead of in the filelog. When storing it in the changeset, it will obviously be efficient to get the copy metadata for all files in a single changeset, but it will be more expensive to get the copy metadata all revisions of a single file. Some algorithms will then need to be optimized differently. The first method I'm going to rewrite is pathcopies(). This commit adds many tests for pathcopies(), so we can run the tests with both old and new versions of the code, as well as with metadata stored in filelog or in changeset (later). They use the debugpathcopies command I recently added (with no tests when it was added). They show a few bugs and few cases of slightly weird behavior. I'll fix the bugs in the next few commits. Differential Revision: https://phab.mercurial-scm.org/D5986
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     1
====================================
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     2
Testing head checking code: Case B-3
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     3
====================================
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     4
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
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
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
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
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     7
some of the new one we push.
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     8
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
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.
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    10
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    11
Category B: simple case involving pruned changesets
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    12
TestCase 3: multi-changeset branch, other is pruned, rest is superceeded
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    13
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    14
.. old-state:
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    15
..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    16
.. * 2 changeset branch
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    17
..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    18
.. new-state:
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    19
..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    20
.. * old head is superceeded
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    21
.. * old other is pruned
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    22
..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    23
.. expected-result:
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    24
..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    25
.. * push allowed
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    26
..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    27
.. graph-summary:
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    28
..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    29
..   B ø⇠◔ B'
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    30
..     | |
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    31
..   A ⊗ |
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    32
..     |/
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    33
..     ●
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    34
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    35
  $ . $TESTDIR/testlib/push-checkheads-util.sh
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    36
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    37
Test setup
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    38
----------
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    39
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    40
  $ mkdir B3
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    41
  $ cd B3
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    42
  $ setuprepos
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    43
  creating basic server and client repo
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    44
  updating to branch default
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
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
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    46
  $ cd server
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    47
  $ mkcommit B0
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    48
  $ cd ../client
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
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/B3/server
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    51
  searching for changes
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    52
  adding changesets
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    53
  adding manifests
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    54
  adding file changes
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
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)
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    57
  (run 'hg update' to get a working copy)
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    58
  $ hg up 0
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
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
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    60
  $ mkcommit B1
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    61
  created new head
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    62
  $ hg debugobsolete --record-parents `getid "desc(A0)"`
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
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    65
  $ 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
    66
  obsoleted 1 changesets
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    67
  $ hg log -G --hidden
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    68
  @  25c56d33e4c4 (draft): B1
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    69
  |
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    70
  | x  d73caddc5533 (draft): B0
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    71
  | |
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    72
  | x  8aaa48160adc (draft): A0
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    73
  |/
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    74
  o  1e4be0697311 (public): root
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    75
  
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    76
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    77
Actual testing
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    78
--------------
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    79
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
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/B3/server
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    82
  searching for changes
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    83
  adding changesets
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    84
  adding manifests
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    85
  adding file changes
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    86
  added 1 changesets with 1 changes to 1 files (+1 heads)
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
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: 31982
diff changeset
    88
  obsoleted 2 changesets
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    89
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    90
  $ cd ../..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    91