# HG changeset patch # User Christian Delahousse # Date 2015-12-01 19:17:14 # Node ID 9fbe3545e4bd8a7456931d30f9dc811683783f7e # Parent 8a8f5d71a49a0df274b5da935766e90980cd61a3 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 diff --git a/tests/test-rebuildstate.t b/tests/test-rebuildstate.t --- a/tests/test-rebuildstate.t +++ b/tests/test-rebuildstate.t @@ -1,3 +1,34 @@ + + $ cat > adddrop.py < 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 @@ state dump after 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