Mercurial > hg
view tests/test-rebuildstate.t @ 29759:e584c6235500
py3: conditionalize the raise statement
raise E,V,T is not acceptable in Python 3, thats is conditionalized.
Moreover this will result in syntax error so we have to use exec() to
execute this. Related PEP- https://www.python.org/dev/peps/pep-3109/#id14
My implementation is motivated from the six implementation except they are
defining a new function exec_() to prevent adding an extra frame AFAIK :)
https://bitbucket.org/gutworth/six/src/ca4580a5a648/six.py#six.py-680
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Mon, 08 Aug 2016 23:51:11 +0530 |
parents | 54ace3372f84 |
children | ba06562a06a2 |
line wrap: on
line source
$ 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 $ cd repo $ touch foo bar $ hg ci -Am 'add foo bar' adding bar adding foo $ touch baz $ hg add baz $ hg rm bar $ hg debugrebuildstate state dump after $ hg debugstate --nodates | sort 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 ! bar ? baz C foo Test debugdirstate --minimal where a file is not in parent manifest but in the dirstate $ touch foo bar qux $ hg add qux $ hg remove bar $ hg status -A A qux R bar ? baz C foo $ hg debugadddrop --normal-lookup baz $ hg debugdirstate --nodates r 0 0 * bar (glob) n 0 -1 * baz (glob) n 644 0 * foo (glob) a 0 -1 * qux (glob) $ hg debugrebuilddirstate --minimal $ hg debugdirstate --nodates r 0 0 * bar (glob) n 644 0 * foo (glob) a 0 -1 * qux (glob) $ hg status -A A qux R bar ? baz C foo Test debugdirstate --minimal where file is in the parent manifest but not the dirstate $ hg manifest bar foo $ hg status -A A qux R bar ? baz C foo $ hg debugdirstate --nodates r 0 0 * bar (glob) n 644 0 * foo (glob) a 0 -1 * qux (glob) $ hg debugadddrop --drop foo $ hg debugdirstate --nodates r 0 0 * bar (glob) a 0 -1 * qux (glob) $ hg debugrebuilddirstate --minimal $ hg debugdirstate --nodates r 0 0 * bar (glob) n 644 -1 * foo (glob) a 0 -1 * qux (glob) $ hg status -A A qux R bar ? baz C foo