tests/test-repair-strip.t
changeset 14022 f8e1dc896e5f
child 15443 a1914d214579
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-repair-strip.t	Fri Apr 29 09:43:21 2011 +0200
@@ -0,0 +1,130 @@
+
+  $ echo "[extensions]" >> $HGRCPATH
+  $ echo "mq=">> $HGRCPATH
+
+  $ teststrip() {
+  >   hg -q up -C $1
+  >   echo % before update $1, strip $2
+  >   hg parents
+  >   chmod -$3 $4
+  >   hg strip $2 2>&1 | sed 's/\(bundle\).*/\1/' | sed 's/Permission denied.*\.hg\/store\/\(.*\)/Permission denied \.hg\/store\/\1/'
+  >   echo % after update $1, strip $2
+  >   chmod +$3 $4
+  >   hg verify
+  >   echo % journal contents
+  >   if [ -f .hg/store/journal ]; then
+  >       sed -e 's/\.i[^\n]*/\.i/' .hg/store/journal
+  >   else
+  >       echo "(no journal)"
+  >   fi
+  >   ls .hg/store/journal >/dev/null 2>&1 && hg recover
+  >   ls .hg/strip-backup/* >/dev/null 2>&1 && hg unbundle -q .hg/strip-backup/*
+  >   rm -rf .hg/strip-backup
+  > }
+
+  $ hg init test
+  $ cd test
+  $ echo a > a
+  $ hg -q ci -m "a" -A
+  $ echo b > b
+  $ hg -q ci -m "b" -A
+  $ echo b2 >> b
+  $ hg -q ci -m "b2" -A
+  $ echo c > c
+  $ hg -q ci -m "c" -A
+  $ teststrip 0 2 w .hg/store/data/b.i
+  % before update 0, strip 2
+  changeset:   0:cb9a9f314b8b
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     a
+  
+  saved backup bundle
+  transaction abort!
+  failed to truncate data/b.i
+  rollback failed - please run hg recover
+  strip failed, full bundle
+  abort: Permission denied .hg/store/data/b.i
+  % after update 0, strip 2
+  abandoned transaction found - run hg recover
+  checking changesets
+  checking manifests
+  crosschecking files in changesets and manifests
+  checking files
+   b@?: rev 1 points to nonexistent changeset 2
+   (expected 1)
+   b@?: 736c29771fba not in manifests
+  warning: orphan revlog 'data/c.i'
+  2 files, 2 changesets, 3 total revisions
+  2 warnings encountered!
+  2 integrity errors encountered!
+  % journal contents
+  00changelog.i
+  00manifest.i
+  data/b.i
+  data/c.i
+  rolling back interrupted transaction
+  checking changesets
+  checking manifests
+  crosschecking files in changesets and manifests
+  checking files
+  2 files, 2 changesets, 2 total revisions
+  $ teststrip 0 2 r .hg/store/data/b.i
+  % before update 0, strip 2
+  changeset:   0:cb9a9f314b8b
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     a
+  
+  abort: Permission denied .hg/store/data/b.i
+  % after update 0, strip 2
+  checking changesets
+  checking manifests
+  crosschecking files in changesets and manifests
+  checking files
+  3 files, 4 changesets, 4 total revisions
+  % journal contents
+  (no journal)
+  $ teststrip 0 2 w .hg/store/00manifest.i
+  % before update 0, strip 2
+  changeset:   0:cb9a9f314b8b
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     a
+  
+  saved backup bundle
+  transaction abort!
+  failed to truncate 00manifest.i
+  rollback failed - please run hg recover
+  strip failed, full bundle
+  abort: Permission denied .hg/store/00manifest.i
+  % after update 0, strip 2
+  abandoned transaction found - run hg recover
+  checking changesets
+  checking manifests
+   manifest@?: rev 2 points to nonexistent changeset 2
+   manifest@?: 3362547cdf64 not in changesets
+   manifest@?: rev 3 points to nonexistent changeset 3
+   manifest@?: 265a85892ecb not in changesets
+  crosschecking files in changesets and manifests
+   c@3: in manifest but not in changeset
+  checking files
+   b@?: rev 1 points to nonexistent changeset 2
+   (expected 1)
+   c@?: rev 0 points to nonexistent changeset 3
+  3 files, 2 changesets, 4 total revisions
+  1 warnings encountered!
+  7 integrity errors encountered!
+  (first damaged changeset appears to be 3)
+  % journal contents
+  00changelog.i
+  00manifest.i
+  data/b.i
+  data/c.i
+  rolling back interrupted transaction
+  checking changesets
+  checking manifests
+  crosschecking files in changesets and manifests
+  checking files
+  2 files, 2 changesets, 2 total revisions
+