view tests/test-mq-guards @ 4193:9e3121017fb2

Optimize return value of util._matcher for common command line case This will trigger every time somebody runs something like "hg diff" or "hg status" without any arguments. The important part here is returning util.always as the match function, which is a much simpler (and faster) function than the usual return value, and allows other code to just skip the filtering if it knows all files will match.
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Sat, 10 Mar 2007 23:01:00 -0300
parents a9ee6c53af8d
children 943f40b4da30
line wrap: on
line source

#!/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 does-not-exist.patch +bleh

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

hg qrename a.patch new.patch
echo % should show :
echo % new.patch: +1 +2 -3
echo % b.patch: +2
echo % c.patch: unguarded
hg qguard -l

hg qnew d.patch
hg qpop
echo % should show new.patch and b.patch as Guarded, c.patch as Applied
echo % and d.patch as Unapplied
hg qseries -v

hg qguard d.patch +2
echo % new.patch, b.patch: Guarded. c.patch: Applied. d.patch: Guarded.
hg qseries -v