tests/test-exchange-A7.t
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Fri, 22 Jan 2016 21:41:59 +0900
changeset 1594 de43a3e6b358
parent 1093 a49f2e7a2755
child 2083 778afb036245
permissions -rw-r--r--
evolve: close transaction if conflict is detected in relocate (issue4966) Before this patch, transaction is aborted, if conflict is detected at merging while "hg evolve". Since 8f2ff40fe9c9 (or 3.6) of Mercurial, aborting transaction discards all dirstate changes inside transaction scope for "transactional dirstate" (see below wiki page for detail about it). https://mercurial.selenic.com/wiki/DirstateTransactionPlan Therefore, just aborting transaction causes unchanged (and unexpected) dirstate, even though subsequent commands require dirstate changes while "hg evolve". To keep dirstate changes while "hg evolve", this patch closes current running transaction, if conflict is detected in relocate(), even though exception is raised as usual. Even though "save dirstate and restore it after aborting transaction" like shelve._aborttransaction() of Mercurial can also solve this issue, this patch chose closing transaction for similarity with failure for conflict at "hg unshelve". In addition to it, closing transaction can keep any previous (implicit) changes. In newly added test, there is an additional ancestor revision, which "will be evolved safely". It is used to examine whether failure for conflict doesn't discard already relocated revision(s) while "hg evolve". It is fact for current implementation that "hg evolve" relocates each revisions in separated transactions and already relocated ones are never discarded, even if subsequent relocation fails. Though, this examination is useful to detect unintentional regression in the future.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
836
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     1
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     2
Initial setup
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     3
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     4
  $ . $TESTDIR/_exc-util.sh
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     5
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     6
=== A.7 Non targeted common changeset ===
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     7
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     8
.. {{{
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
     9
..    ⇠◕ A
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    10
..     |
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    11
..      O
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    12
.. }}}
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    13
..
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    14
.. Marker exist from:
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    15
..
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    16
..  * Chain from A
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    17
..
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    18
.. Command run:
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    19
..
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    20
..  * hg push -r O
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    21
..
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    22
.. Expected exchange:
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    23
..
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    24
..  * ø
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    25
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    26
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    27
  $ setuprepos A.7
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    28
  creating test repo for test case A.7
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    29
  - pulldest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    30
  - main
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    31
  - pushdest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    32
  cd into `main` and proceed with env setup
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    33
  $ cd main
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    34
  $ mkcommit A
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    35
  $ hg push -q ../pushdest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    36
  $ hg push -q ../pulldest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    37
  $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa `getid 'desc(A)'`
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    38
  $ hg log -G --hidden
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    39
  @  f5bc6836db60 (draft): A
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    40
  |
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    41
  o  a9bdc8b26820 (public): O
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    42
  
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    43
  $ hg debugobsolete
1065
f355bbc124fc test: update test to new date formatting in debuobsolete output
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1060
diff changeset
    44
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
836
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    45
  $ cd ..
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    46
  $ cd ..
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    47
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    48
Actual Test
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    49
-----------------------------------
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    50
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    51
  $ dotest A.7 O
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    52
  ## Running testcase A.7
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    53
  # testing echange of "O" (a9bdc8b26820)
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    54
  ## initial state
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    55
  # obstore: main
1065
f355bbc124fc test: update test to new date formatting in debuobsolete output
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1060
diff changeset
    56
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
836
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    57
  # obstore: pushdest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    58
  # obstore: pulldest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    59
  ## pushing "O" from main to pushdest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    60
  pushing to pushdest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    61
  searching for changes
1078
5717d023da63 obsexc: use the common discovery
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1065
diff changeset
    62
  no changes found
836
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    63
  ## post push state
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    64
  # obstore: main
1065
f355bbc124fc test: update test to new date formatting in debuobsolete output
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1060
diff changeset
    65
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
836
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    66
  # obstore: pushdest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    67
  # obstore: pulldest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    68
  ## pulling "a9bdc8b26820" from main into pulldest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    69
  pulling from main
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    70
  no changes found
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    71
  ## post pull state
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    72
  # obstore: main
1065
f355bbc124fc test: update test to new date formatting in debuobsolete output
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 1060
diff changeset
    73
  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa f5bc6836db60e308a17ba08bf050154ba9c4fad7 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
836
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    74
  # obstore: pushdest
f6cd01954dd6 exchange: add test case for A.7
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff changeset
    75
  # obstore: pulldest