tests/test-mq-guards
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Sat, 28 Oct 2006 23:37:59 -0300
changeset 3577 7f7425306925
parent 2976 61fcd9fac434
child 3685 193e9c6d1a6d
permissions -rwxr-xr-x
Correct optimization from 3464f5e77f34; add a test. If there are two (or more) heads that point to the same .hgtags node, we can safely skip parsing the file in all but the last head. (In 3464f5e77f34, we were parsing the file in the first head and skipping all the others.)

#!/bin/sh

echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH

hg init
hg qinit

echo x > x
hg ci -Ama

hg qnew a.patch
echo a > a
hg add a
hg qrefresh

hg qnew b.patch
echo b > b
hg add b
hg qrefresh

hg qnew c.patch
echo c > c
hg add c
hg qrefresh

hg qpop -a

echo % should fail
hg qguard +fail

hg qpush
echo % should guard a.patch
hg qguard +a
echo % should print +a
hg qguard
hg qpop

hg qguard a.patch
echo % should push b.patch
hg qpush

hg qpop
hg qselect a
echo % should push a.patch
hg qpush

hg qguard c.patch -a
echo % should print -a
hg qguard c.patch

echo % should skip c.patch
hg qpush -a

hg qguard -n c.patch
echo % should push c.patch
hg qpush -a

hg qpop -a
hg qselect -n
echo % should push all
hg qpush -a

hg qpop -a
hg qguard a.patch +1
hg qguard b.patch +2
hg qselect 1
echo % should push a.patch, not b.patch
hg qpush
hg qpush
hg qpop -a

hg qselect 2
echo % should push b.patch
hg qpush
hg qpop -a

hg qselect 1 2
echo % should push a.patch, b.patch
hg qpush
hg qpush
hg qpop -a

hg qguard a.patch +1 +2 -3
hg qselect 1 2 3
echo % list patches and guards
hg qguard -l
echo % list series
hg qseries -v
echo % list guards
hg qselect
echo % should push b.patch
hg qpush

hg qpush -a
hg qselect -n --reapply
echo % guards in series file: +1 +2 -3
hg qselect -s
echo % should show c.patch
hg qapplied