diff tests/test-censor.t @ 47457:f8330a3fc39f

censor: implement censoring for revlogv2 It is a bit verbose and rough, but it works. Most of that logic can be common for `stripping`, so we can expect more refactoring of that code to accommodate both needs. However I wanted to keep this changesets "simple enough" and before moving forward. We also need to properly delete the older index/data/sidedata file, but this has implication for streaming clone and transaction, so this will come later. Differential Revision: https://phab.mercurial-scm.org/D10869
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 07 Jun 2021 11:59:27 +0200
parents 8089d0fa8400
children 95ea181d9bdd
line wrap: on
line diff
--- a/tests/test-censor.t	Sun Jun 20 23:05:58 2021 +0200
+++ b/tests/test-censor.t	Mon Jun 07 11:59:27 2021 +0200
@@ -1,4 +1,14 @@
 #require no-reposimplestore
+#testcases revlogv1 revlogv2
+
+#if revlogv2
+
+  $ cat >> $HGRCPATH <<EOF
+  > [experimental]
+  > revlogv2=enable-unstable-format-and-corrupt-my-data
+  > EOF
+
+#endif
 
   $ cat >> $HGRCPATH <<EOF
   > [extensions]
@@ -505,3 +515,51 @@
   new changesets e97f55b2665a (1 drafts)
   (run 'hg update' to get a working copy)
   $ hg cat -r 0 target | head -n 10
+
+#if revlogv2
+
+Testing feature that does not work in revlog v1
+===============================================
+
+Censoring a revision that is used as delta base
+-----------------------------------------------
+
+  $ cd ..
+  $ hg init censor-with-delta
+  $ cd censor-with-delta
+  $ echo root > target
+  $ hg add target
+  $ hg commit -m root
+  $ B0=`hg id --debug -i`
+  $ for x in `"$PYTHON" $TESTDIR/seq.py 0 50000`
+  > do
+  >   echo "Password: hunter$x" >> target
+  > done
+  $ hg ci -m 'write a long file'
+  $ B1=`hg id --debug -i`
+  $ echo 'small change (should create a delta)' >> target
+  $ hg ci -m 'create a delta over the password'
+(should show that the last revision is a delta, not a snapshot)
+  $ B2=`hg id --debug -i`
+
+Make sure the last revision is a delta against the revision we will censor
+
+  $ hg debugdeltachain target -T '{rev} {chainid} {chainlen} {prevrev}\n'
+  0 1 1 -1
+  1 2 1 -1
+  2 2 2 1
+
+Censor the file
+
+  $ hg cat -r $B1 target | wc -l
+  50002 (re)
+  $ hg censor -r $B1 target
+  $ hg cat -r $B1 target | wc -l
+  0 (re)
+
+Check the children is fine
+
+  $ hg cat -r $B2 target | wc -l
+  50003 (re)
+
+#endif