Mercurial > hg
view tests/test-rebuildstate.t @ 32015:605c38105950
obsolescence: add test for the "branch replacement" logic during push, case B8
Mercurial checks for the introduction of new heads on push. Evolution comes
into play to detect if existing branches on the server are being replaced by
some of the new one we push.
This changeset adds test for the improved "branch replacement" logic introduce
in an earlier commits. This tests initially lived in the evolve extensions.
Since we now have the code handling this logic in core, it make sense to have
the tests in core too.
See inline documentation for details about the test case added in this
changeset.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Sat, 15 Apr 2017 02:53:57 +0200 |
parents | ba06562a06a2 |
children | 46ba2cdda476 |
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 0 -1 unset bar n 0 -1 unset 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 0 -1 unset 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 0 -1 * foo (glob) a 0 -1 * qux (glob) $ hg status -A A qux R bar ? baz C foo