view tests/test-fastannotate-corrupt.t @ 45347:1aef38d973e8

merge: pass mergeresult obj in _forgetremoved() (API) Instead of returning a dict of actions and then updating it, let's pass the object directly and update it there. This makes `updateactions()` on mergeresult unused and this patch removes that. After this patch, we have couple of methods left on mergeresult class which still exposes the internal dict based action storage. Differential Revision: https://phab.mercurial-scm.org/D8889
author Pulkit Goyal <7895pulkit@gmail.com>
date Wed, 05 Aug 2020 16:52:51 +0530
parents 1ddb296e0dee
children
line wrap: on
line source

  $ cat >> $HGRCPATH << EOF
  > [extensions]
  > fastannotate=
  > EOF

  $ hg init repo
  $ cd repo
  $ for i in 0 1 2 3 4; do
  >   echo $i >> a
  >   echo $i >> b
  >   hg commit -A -m $i a b
  > done

use the "debugbuildannotatecache" command to build annotate cache at rev 0

  $ hg debugbuildannotatecache --debug --config fastannotate.mainbranch=0
  fastannotate: a: 1 new changesets in the main branch
  fastannotate: b: 1 new changesets in the main branch

"debugbuildannotatecache" should work with broken cache (and other files would
be built without being affected). note: linelog being broken is only noticed
when we try to append to it.

  $ echo 'CORRUPT!' >> .hg/fastannotate/default/a.m
  $ hg debugbuildannotatecache --debug --config fastannotate.mainbranch=1
  fastannotate: a: rebuilding broken cache
  fastannotate: a: 2 new changesets in the main branch
  fastannotate: b: 1 new changesets in the main branch

  $ echo 'CANNOT REUSE!' > .hg/fastannotate/default/a.l
  $ hg debugbuildannotatecache --debug --config fastannotate.mainbranch=2
  fastannotate: a: rebuilding broken cache
  fastannotate: a: 3 new changesets in the main branch
  fastannotate: b: 1 new changesets in the main branch

  $ rm .hg/fastannotate/default/a.m
  $ hg debugbuildannotatecache --debug --config fastannotate.mainbranch=3
  fastannotate: a: rebuilding broken cache
  fastannotate: a: 4 new changesets in the main branch
  fastannotate: b: 1 new changesets in the main branch

  $ rm .hg/fastannotate/default/a.l
  $ hg debugbuildannotatecache --debug --config fastannotate.mainbranch=3
  $ hg debugbuildannotatecache --debug --config fastannotate.mainbranch=4
  fastannotate: a: rebuilding broken cache
  fastannotate: a: 5 new changesets in the main branch
  fastannotate: b: 1 new changesets in the main branch

"fastannotate" should deal with file corruption as well

  $ rm -rf .hg/fastannotate
  $ hg fastannotate --debug -r 0 a
  fastannotate: a: 1 new changesets in the main branch
  0: 0

  $ echo 'CORRUPT!' >> .hg/fastannotate/default/a.m
  $ hg fastannotate --debug -r 0 a
  fastannotate: a: cache broken and deleted
  fastannotate: a: 1 new changesets in the main branch
  0: 0

  $ echo 'CORRUPT!' > .hg/fastannotate/default/a.l
  $ hg fastannotate --debug -r 1 a
  fastannotate: a: cache broken and deleted
  fastannotate: a: 2 new changesets in the main branch
  0: 0
  1: 1

  $ rm .hg/fastannotate/default/a.l
  $ hg fastannotate --debug -r 1 a
  fastannotate: a: using fast path (resolved fctx: True)
  fastannotate: a: cache broken and deleted
  fastannotate: a: 2 new changesets in the main branch
  0: 0
  1: 1

  $ rm .hg/fastannotate/default/a.m
  $ hg fastannotate --debug -r 2 a
  fastannotate: a: cache broken and deleted
  fastannotate: a: 3 new changesets in the main branch
  0: 0
  1: 1
  2: 2