tests/test-evolve-cycles.t
branchmercurial-3.9
changeset 2801 49494d0155b7
parent 2800 13c4d518327a
parent 2702 167567795f6c
child 2802 41c9a4df628e
child 2811 35d053d7bd87
equal deleted inserted replaced
2800:13c4d518327a 2801:49494d0155b7
     1 Test that evolve related algorithms don't crash on obs markers cycles
       
     2 
       
     3 Global setup
       
     4 ============
       
     5 
       
     6   $ . $TESTDIR/testlib/common.sh
       
     7   $ cat >> $HGRCPATH <<EOF
       
     8   > [ui]
       
     9   > interactive = true
       
    10   > [phases]
       
    11   > publish=False
       
    12   > [extensions]
       
    13   > evolve =
       
    14   > EOF
       
    15 
       
    16 Test with cycle
       
    17 ===============
       
    18 
       
    19 Test setup
       
    20 ----------
       
    21 
       
    22   $ hg init $TESTTMP/cycle
       
    23   $ cd $TESTTMP/cycle
       
    24   $ mkcommit ROOT
       
    25   $ mkcommit A
       
    26   $ mkcommit B
       
    27   $ mkcommit C
       
    28   $ hg log -G
       
    29   @  changeset:   3:a8df460dbbfe
       
    30   |  tag:         tip
       
    31   |  user:        test
       
    32   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
    33   |  summary:     C
       
    34   |
       
    35   o  changeset:   2:c473644ee0e9
       
    36   |  user:        test
       
    37   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
    38   |  summary:     B
       
    39   |
       
    40   o  changeset:   1:2a34000d3544
       
    41   |  user:        test
       
    42   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
    43   |  summary:     A
       
    44   |
       
    45   o  changeset:   0:ea207398892e
       
    46      user:        test
       
    47      date:        Thu Jan 01 00:00:00 1970 +0000
       
    48      summary:     ROOT
       
    49   
       
    50 Create a cycle
       
    51   $ hg prune -s "desc(B)" "desc(A)"
       
    52   1 changesets pruned
       
    53   2 new unstable changesets
       
    54   $ hg prune -s "desc(C)" "desc(B)"
       
    55   1 changesets pruned
       
    56   $ hg prune -s "desc(A)" "desc(C)"
       
    57   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
    58   working directory now at 2a34000d3544
       
    59   1 changesets pruned
       
    60   $ hg log --hidden -G
       
    61   x  changeset:   3:a8df460dbbfe
       
    62   |  tag:         tip
       
    63   |  user:        test
       
    64   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
    65   |  summary:     C
       
    66   |
       
    67   x  changeset:   2:c473644ee0e9
       
    68   |  user:        test
       
    69   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
    70   |  summary:     B
       
    71   |
       
    72   @  changeset:   1:2a34000d3544
       
    73   |  user:        test
       
    74   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
    75   |  summary:     A
       
    76   |
       
    77   o  changeset:   0:ea207398892e
       
    78      user:        test
       
    79      date:        Thu Jan 01 00:00:00 1970 +0000
       
    80      summary:     ROOT
       
    81   
       
    82 Actual test
       
    83 -----------
       
    84 
       
    85 Check that debugobshistory never crash on a cycle
       
    86 
       
    87   $ hg obslog "desc(A)" --hidden
       
    88   @  2a34000d3544 (1) A
       
    89   |    rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob)
       
    90   |
       
    91   x  a8df460dbbfe (3) C
       
    92   |    rewritten(description, parent, content) by test (*) as 2a34000d3544 (glob)
       
    93   |
       
    94   x  c473644ee0e9 (2) B
       
    95   |    rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob)
       
    96   |
       
    97 
       
    98   $ hg obslog "desc(B)" --hidden
       
    99   @  2a34000d3544 (1) A
       
   100   |    rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob)
       
   101   |
       
   102   x  a8df460dbbfe (3) C
       
   103   |    rewritten(description, parent, content) by test (*) as 2a34000d3544 (glob)
       
   104   |
       
   105   x  c473644ee0e9 (2) B
       
   106   |    rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob)
       
   107   |
       
   108 
       
   109   $ hg obslog "desc(C)" --hidden
       
   110   @  2a34000d3544 (1) A
       
   111   |    rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob)
       
   112   |
       
   113   x  a8df460dbbfe (3) C
       
   114   |    rewritten(description, parent, content) by test (*) as 2a34000d3544 (glob)
       
   115   |
       
   116   x  c473644ee0e9 (2) B
       
   117   |    rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob)
       
   118   |
       
   119 
       
   120 Check that all option don't crash on a cycle either
       
   121 
       
   122   $ hg obslog "desc(C)" --hidden --all
       
   123   @  2a34000d3544 (1) A
       
   124   |    rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob)
       
   125   |
       
   126   x  a8df460dbbfe (3) C
       
   127   |    rewritten(description, parent, content) by test (*) as 2a34000d3544 (glob)
       
   128   |
       
   129   x  c473644ee0e9 (2) B
       
   130   |    rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob)
       
   131   |
       
   132 
       
   133 Test with multiple cyles
       
   134 ========================
       
   135 
       
   136 Test setup
       
   137 ----------
       
   138 
       
   139   $ hg init $TESTTMP/multiple-cycle
       
   140   $ cd $TESTTMP/multiple-cycle
       
   141   $ mkcommit ROOT
       
   142   $ mkcommit A
       
   143   $ mkcommit B
       
   144   $ mkcommit C
       
   145   $ mkcommit D
       
   146   $ mkcommit E
       
   147   $ mkcommit F
       
   148   $ hg log -G
       
   149   @  changeset:   6:d9f908fde1a1
       
   150   |  tag:         tip
       
   151   |  user:        test
       
   152   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   153   |  summary:     F
       
   154   |
       
   155   o  changeset:   5:0da815c333f6
       
   156   |  user:        test
       
   157   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   158   |  summary:     E
       
   159   |
       
   160   o  changeset:   4:868d2e0eb19c
       
   161   |  user:        test
       
   162   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   163   |  summary:     D
       
   164   |
       
   165   o  changeset:   3:a8df460dbbfe
       
   166   |  user:        test
       
   167   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   168   |  summary:     C
       
   169   |
       
   170   o  changeset:   2:c473644ee0e9
       
   171   |  user:        test
       
   172   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   173   |  summary:     B
       
   174   |
       
   175   o  changeset:   1:2a34000d3544
       
   176   |  user:        test
       
   177   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   178   |  summary:     A
       
   179   |
       
   180   o  changeset:   0:ea207398892e
       
   181      user:        test
       
   182      date:        Thu Jan 01 00:00:00 1970 +0000
       
   183      summary:     ROOT
       
   184   
       
   185 Create a first cycle
       
   186   $ hg prune -s "desc(B)" "desc(A)"
       
   187   1 changesets pruned
       
   188   5 new unstable changesets
       
   189   $ hg prune -s "desc(C)" "desc(B)"
       
   190   1 changesets pruned
       
   191   $ hg prune --split -s "desc(A)" -s "desc(D)" "desc(C)"
       
   192   1 changesets pruned
       
   193 And create a second one
       
   194   $ hg prune -s "desc(E)" "desc(D)"
       
   195   1 changesets pruned
       
   196   $ hg prune -s "desc(F)" "desc(E)"
       
   197   1 changesets pruned
       
   198   $ hg prune -s "desc(D)" "desc(F)"
       
   199   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   200   working directory now at 868d2e0eb19c
       
   201   1 changesets pruned
       
   202   $ hg log --hidden -G
       
   203   x  changeset:   6:d9f908fde1a1
       
   204   |  tag:         tip
       
   205   |  user:        test
       
   206   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   207   |  summary:     F
       
   208   |
       
   209   x  changeset:   5:0da815c333f6
       
   210   |  user:        test
       
   211   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   212   |  summary:     E
       
   213   |
       
   214   @  changeset:   4:868d2e0eb19c
       
   215   |  user:        test
       
   216   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   217   |  summary:     D
       
   218   |
       
   219   x  changeset:   3:a8df460dbbfe
       
   220   |  user:        test
       
   221   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   222   |  summary:     C
       
   223   |
       
   224   x  changeset:   2:c473644ee0e9
       
   225   |  user:        test
       
   226   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   227   |  summary:     B
       
   228   |
       
   229   x  changeset:   1:2a34000d3544
       
   230   |  user:        test
       
   231   |  date:        Thu Jan 01 00:00:00 1970 +0000
       
   232   |  summary:     A
       
   233   |
       
   234   o  changeset:   0:ea207398892e
       
   235      user:        test
       
   236      date:        Thu Jan 01 00:00:00 1970 +0000
       
   237      summary:     ROOT
       
   238   
       
   239 Actual test
       
   240 -----------
       
   241 
       
   242 Check that debugobshistory never crash on a cycle
       
   243 
       
   244   $ hg obslog "desc(D)" --hidden
       
   245   x  0da815c333f6 (5) E
       
   246   |    rewritten(description, parent, content) by test (*) as d9f908fde1a1 (glob)
       
   247   |
       
   248   @    868d2e0eb19c (4) D
       
   249   |\     rewritten(description, parent, content) by test (*) as 0da815c333f6 (glob)
       
   250   | |
       
   251   | x  d9f908fde1a1 (6) F
       
   252   | |    rewritten(description, parent, content) by test (*) as 868d2e0eb19c (glob)
       
   253   | |
       
   254   +---x  2a34000d3544 (1) A
       
   255   | |      rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob)
       
   256   | |
       
   257   x |  a8df460dbbfe (3) C
       
   258   | |    rewritten(description, parent, content) by test (*) as 2a34000d3544, 868d2e0eb19c (glob)
       
   259   | |
       
   260   x |  c473644ee0e9 (2) B
       
   261   | |    rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob)
       
   262   | |
       
   263 Check that all option don't crash either on a cycle
       
   264   $ hg obslog --all --hidden "desc(F)"
       
   265   x  0da815c333f6 (5) E
       
   266   |    rewritten(description, parent, content) by test (*) as d9f908fde1a1 (glob)
       
   267   |
       
   268   @    868d2e0eb19c (4) D
       
   269   |\     rewritten(description, parent, content) by test (*) as 0da815c333f6 (glob)
       
   270   | |
       
   271   | x  d9f908fde1a1 (6) F
       
   272   | |    rewritten(description, parent, content) by test (*) as 868d2e0eb19c (glob)
       
   273   | |
       
   274   +---x  2a34000d3544 (1) A
       
   275   | |      rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob)
       
   276   | |
       
   277   x |  a8df460dbbfe (3) C
       
   278   | |    rewritten(description, parent, content) by test (*) as 2a34000d3544, 868d2e0eb19c (glob)
       
   279   | |
       
   280   x |  c473644ee0e9 (2) B
       
   281   | |    rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob)
       
   282   | |
       
   283 Check the json output is valid in this case
       
   284 
       
   285   $ hg obslog "desc(D)" --hidden --no-graph -Tjson | python -m json.tool
       
   286   [
       
   287       {
       
   288           "debugobshistory.markers": [
       
   289               {
       
   290                   "debugobshistory.effect": [
       
   291                       "description",
       
   292                       "parent",
       
   293                       "content"
       
   294                   ],
       
   295                   "debugobshistory.marker_date": [
       
   296                       *, (glob)
       
   297                       0
       
   298                   ],
       
   299                   "debugobshistory.marker_user": "test",
       
   300                   "debugobshistory.succnodes": [
       
   301                       "0da815c333f6"
       
   302                   ],
       
   303                   "debugobshistory.verb": "rewritten"
       
   304               }
       
   305           ],
       
   306           "debugobshistory.node": "868d2e0eb19c",
       
   307           "debugobshistory.rev": 4,
       
   308           "debugobshistory.shortdescription": "D"
       
   309       },
       
   310       {
       
   311           "debugobshistory.markers": [
       
   312               {
       
   313                   "debugobshistory.effect": [
       
   314                       "description",
       
   315                       "parent",
       
   316                       "content"
       
   317                   ],
       
   318                   "debugobshistory.marker_date": [
       
   319                       *, (glob)
       
   320                       0
       
   321                   ],
       
   322                   "debugobshistory.marker_user": "test",
       
   323                   "debugobshistory.succnodes": [
       
   324                       "868d2e0eb19c"
       
   325                   ],
       
   326                   "debugobshistory.verb": "rewritten"
       
   327               }
       
   328           ],
       
   329           "debugobshistory.node": "d9f908fde1a1",
       
   330           "debugobshistory.rev": 6,
       
   331           "debugobshistory.shortdescription": "F"
       
   332       },
       
   333       {
       
   334           "debugobshistory.markers": [
       
   335               {
       
   336                   "debugobshistory.effect": [
       
   337                       "description",
       
   338                       "parent",
       
   339                       "content"
       
   340                   ],
       
   341                   "debugobshistory.marker_date": [
       
   342                       *, (glob)
       
   343                       0
       
   344                   ],
       
   345                   "debugobshistory.marker_user": "test",
       
   346                   "debugobshistory.succnodes": [
       
   347                       "d9f908fde1a1"
       
   348                   ],
       
   349                   "debugobshistory.verb": "rewritten"
       
   350               }
       
   351           ],
       
   352           "debugobshistory.node": "0da815c333f6",
       
   353           "debugobshistory.rev": 5,
       
   354           "debugobshistory.shortdescription": "E"
       
   355       },
       
   356       {
       
   357           "debugobshistory.markers": [
       
   358               {
       
   359                   "debugobshistory.effect": [
       
   360                       "description",
       
   361                       "parent",
       
   362                       "content"
       
   363                   ],
       
   364                   "debugobshistory.marker_date": [
       
   365                       *, (glob)
       
   366                       0
       
   367                   ],
       
   368                   "debugobshistory.marker_user": "test",
       
   369                   "debugobshistory.succnodes": [
       
   370                       "2a34000d3544",
       
   371                       "868d2e0eb19c"
       
   372                   ],
       
   373                   "debugobshistory.verb": "rewritten"
       
   374               }
       
   375           ],
       
   376           "debugobshistory.node": "a8df460dbbfe",
       
   377           "debugobshistory.rev": 3,
       
   378           "debugobshistory.shortdescription": "C"
       
   379       },
       
   380       {
       
   381           "debugobshistory.markers": [
       
   382               {
       
   383                   "debugobshistory.effect": [
       
   384                       "description",
       
   385                       "parent",
       
   386                       "content"
       
   387                   ],
       
   388                   "debugobshistory.marker_date": [
       
   389                       *, (glob)
       
   390                       0
       
   391                   ],
       
   392                   "debugobshistory.marker_user": "test",
       
   393                   "debugobshistory.succnodes": [
       
   394                       "a8df460dbbfe"
       
   395                   ],
       
   396                   "debugobshistory.verb": "rewritten"
       
   397               }
       
   398           ],
       
   399           "debugobshistory.node": "c473644ee0e9",
       
   400           "debugobshistory.rev": 2,
       
   401           "debugobshistory.shortdescription": "B"
       
   402       },
       
   403       {
       
   404           "debugobshistory.markers": [
       
   405               {
       
   406                   "debugobshistory.effect": [
       
   407                       "description",
       
   408                       "parent",
       
   409                       "content"
       
   410                   ],
       
   411                   "debugobshistory.marker_date": [
       
   412                       *, (glob)
       
   413                       0
       
   414                   ],
       
   415                   "debugobshistory.marker_user": "test",
       
   416                   "debugobshistory.succnodes": [
       
   417                       "c473644ee0e9"
       
   418                   ],
       
   419                   "debugobshistory.verb": "rewritten"
       
   420               }
       
   421           ],
       
   422           "debugobshistory.node": "2a34000d3544",
       
   423           "debugobshistory.rev": 1,
       
   424           "debugobshistory.shortdescription": "A"
       
   425       }
       
   426   ]
       
   427