changeset 27174:9fbe3545e4bd

debugdirstate: add command to rebuildstate test to modify dirstate Debugging the dirstate helps if you have options to add files for normal lookup or drop them from the dirstate. This patch adds a convenience command to test-rebuilddirstate.t to modify the dirstate. It will be used in the next patch to write proper tests for debugrebuilddirstate --minimal
author Christian Delahousse <cdelahousse@fb.com>
date Tue, 01 Dec 2015 11:17:14 -0800
parents 8a8f5d71a49a
children 25a8a866eb5d
files tests/test-rebuildstate.t
diffstat 1 files changed, 40 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-rebuildstate.t	Wed Dec 02 06:33:52 2015 +0000
+++ b/tests/test-rebuildstate.t	Tue Dec 01 11:17:14 2015 -0800
@@ -1,3 +1,34 @@
+
+  $ cat > adddrop.py <<EOF
+  > from mercurial import cmdutil
+  > cmdtable = {}
+  > command = cmdutil.command(cmdtable)
+  > @command('debugadddrop',
+  >   [('', 'drop', False, 'drop file from dirstate', 'FILE'),
+  >    ('', 'normal-lookup', False, 'add file to dirstate', 'FILE')],
+  >     'hg debugadddrop')
+  > def debugadddrop(ui, repo, *pats, **opts):
+  >   '''Add or drop unnamed arguments to or from the dirstate'''
+  >   drop = opts.get('drop')
+  >   nl = opts.get('normal_lookup')
+  >   if nl and drop:
+  >       raise error.Abort('drop and normal-lookup are mutually exclusive')
+  >   wlock = repo.wlock()
+  >   try:
+  >     for file in pats:
+  >       if opts.get('normal_lookup'):
+  >         repo.dirstate.normallookup(file)
+  >       else:
+  >         repo.dirstate.drop(file)
+  > 
+  >     repo.dirstate.write(repo.currenttransaction())
+  >   finally:
+  >     wlock.release()
+  > EOF
+
+  $ echo "[extensions]" >> $HGRCPATH
+  $ echo "debugadddrop=`pwd`/adddrop.py" >> $HGRCPATH
+
 basic test for hg debugrebuildstate
 
   $ hg init repo
@@ -20,6 +51,15 @@
   n 644         -1 set                 bar
   n 644         -1 set                 foo
 
+  $ hg debugadddrop --normal-lookup file1 file2
+  $ hg debugadddrop --drop bar
+  $ hg debugadddrop --drop
+  $ hg debugstate --nodates
+  n   0         -1 unset               file1
+  n   0         -1 unset               file2
+  n 644         -1 set                 foo
+  $ hg debugrebuildstate
+
 status
 
   $ hg st -A