From 02e3cfd53a1aad46d0ce1e59f6f85ae842546031 Mon Sep 17 00:00:00 2001 From: Christian Delahousse Date: Tue, 1 Dec 2015 11:17:14 -0800 Subject: [PATCH] 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 --- tests/test-rebuildstate.t | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/test-rebuildstate.t b/tests/test-rebuildstate.t index becff22485..639802658c 100644 --- 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