summaryrefslogtreecommitdiff
path: root/tests/test-mq-guards.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-mq-guards.t')
-rw-r--r--tests/test-mq-guards.t509
1 files changed, 509 insertions, 0 deletions
diff --git a/tests/test-mq-guards.t b/tests/test-mq-guards.t
new file mode 100644
index 0000000..4ab4ac9
--- /dev/null
+++ b/tests/test-mq-guards.t
@@ -0,0 +1,509 @@
+ $ echo "[extensions]" >> $HGRCPATH
+ $ echo "mq=" >> $HGRCPATH
+
+ $ hg init
+ $ hg qinit
+
+ $ echo x > x
+ $ hg ci -Ama
+ adding x
+
+ $ 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
+ popping c.patch
+ popping b.patch
+ popping a.patch
+ patch queue now empty
+
+
+should fail
+
+ $ hg qguard does-not-exist.patch +bleh
+ abort: no patch named does-not-exist.patch
+ [255]
+
+
+should fail
+
+ $ hg qguard +fail
+ abort: no patches applied
+ [255]
+
+ $ hg qpush
+ applying a.patch
+ now at: a.patch
+
+should guard a.patch
+
+ $ hg qguard +a
+
+should print +a
+
+ $ hg qguard
+ a.patch: +a
+ $ hg qpop
+ popping a.patch
+ patch queue now empty
+
+
+should fail
+
+ $ hg qpush a.patch
+ cannot push 'a.patch' - guarded by '+a'
+ [1]
+
+ $ hg qguard a.patch
+ a.patch: +a
+
+should push b.patch
+
+ $ hg qpush
+ applying b.patch
+ now at: b.patch
+
+ $ hg qpop
+ popping b.patch
+ patch queue now empty
+
+test selection of an empty guard
+
+ $ hg qselect ""
+ abort: guard cannot be an empty string
+ [255]
+ $ hg qselect a
+ number of unguarded, unapplied patches has changed from 2 to 3
+
+should push a.patch
+
+ $ hg qpush
+ applying a.patch
+ now at: a.patch
+
+ $ hg qguard -- c.patch -a
+
+should print -a
+
+ $ hg qguard c.patch
+ c.patch: -a
+
+
+should skip c.patch
+
+ $ hg qpush -a
+ applying b.patch
+ skipping c.patch - guarded by '-a'
+ now at: b.patch
+ $ hg qnext
+ all patches applied
+ [1]
+
+should display b.patch
+
+ $ hg qtop
+ b.patch
+
+ $ hg qguard -n c.patch
+
+should push c.patch
+
+ $ hg qpush -a
+ applying c.patch
+ now at: c.patch
+
+ $ hg qpop -a
+ popping c.patch
+ popping b.patch
+ popping a.patch
+ patch queue now empty
+ $ hg qselect -n
+ guards deactivated
+ number of unguarded, unapplied patches has changed from 3 to 2
+
+should push all
+
+ $ hg qpush -a
+ applying b.patch
+ applying c.patch
+ now at: c.patch
+
+ $ hg qpop -a
+ popping c.patch
+ popping b.patch
+ patch queue now empty
+ $ hg qguard a.patch +1
+ $ hg qguard b.patch +2
+ $ hg qselect 1
+ number of unguarded, unapplied patches has changed from 1 to 2
+
+should push a.patch, not b.patch
+
+ $ hg qpush
+ applying a.patch
+ now at: a.patch
+ $ hg qpush
+ applying c.patch
+ now at: c.patch
+ $ hg qpop -a
+ popping c.patch
+ popping a.patch
+ patch queue now empty
+
+ $ hg qselect 2
+
+should push b.patch
+
+ $ hg qpush
+ applying b.patch
+ now at: b.patch
+ $ hg qpush -a
+ applying c.patch
+ now at: c.patch
+ $ hg qprev
+ b.patch
+
+Used to be an issue with holes in the patch sequence
+So, put one hole on the base and ask for topmost patch.
+
+ $ hg qtop
+ c.patch
+ $ hg qpop -a
+ popping c.patch
+ popping b.patch
+ patch queue now empty
+
+ $ hg qselect 1 2
+ number of unguarded, unapplied patches has changed from 2 to 3
+
+should push a.patch, b.patch
+
+ $ hg qpush
+ applying a.patch
+ now at: a.patch
+ $ hg qpush
+ applying b.patch
+ now at: b.patch
+ $ hg qpop -a
+ popping b.patch
+ popping a.patch
+ patch queue now empty
+
+ $ hg qguard -- a.patch +1 +2 -3
+ $ hg qselect 1 2 3
+ number of unguarded, unapplied patches has changed from 3 to 2
+
+
+list patches and guards
+
+ $ hg qguard -l
+ a.patch: +1 +2 -3
+ b.patch: +2
+ c.patch: unguarded
+
+have at least one patch applied to test coloring
+
+ $ hg qpush
+ applying b.patch
+ now at: b.patch
+
+list patches and guards with color
+
+ $ hg --config extensions.color= qguard --config color.mode=ansi \
+ > -l --color=always
+ \x1b[0;30;1ma.patch\x1b[0m: \x1b[0;33m+1\x1b[0m \x1b[0;33m+2\x1b[0m \x1b[0;31m-3\x1b[0m (esc)
+ \x1b[0;34;1;4mb.patch\x1b[0m: \x1b[0;33m+2\x1b[0m (esc)
+ \x1b[0;30;1mc.patch\x1b[0m: \x1b[0;32munguarded\x1b[0m (esc)
+
+should pop b.patch
+
+ $ hg qpop
+ popping b.patch
+ patch queue now empty
+
+list series
+
+ $ hg qseries -v
+ 0 G a.patch
+ 1 U b.patch
+ 2 U c.patch
+
+list guards
+
+ $ hg qselect
+ 1
+ 2
+ 3
+
+should push b.patch
+
+ $ hg qpush
+ applying b.patch
+ now at: b.patch
+
+ $ hg qpush -a
+ applying c.patch
+ now at: c.patch
+ $ hg qselect -n --reapply
+ guards deactivated
+ popping guarded patches
+ popping c.patch
+ popping b.patch
+ patch queue now empty
+ reapplying unguarded patches
+ applying c.patch
+ now at: c.patch
+
+guards in series file: +1 +2 -3
+
+ $ hg qselect -s
+ +1
+ +2
+ -3
+
+should show c.patch
+
+ $ hg qapplied
+ c.patch
+
+ $ hg qrename a.patch new.patch
+
+should show :
+
+
+new.patch: +1 +2 -3
+
+
+b.patch: +2
+
+
+c.patch: unguarded
+
+ $ hg qguard -l
+ new.patch: +1 +2 -3
+ b.patch: +2
+ c.patch: unguarded
+
+ $ hg qnew d.patch
+ $ hg qpop
+ popping d.patch
+ now at: c.patch
+
+should show new.patch and b.patch as Guarded, c.patch as Applied
+
+
+and d.patch as Unapplied
+
+ $ hg qseries -v
+ 0 G new.patch
+ 1 G b.patch
+ 2 A c.patch
+ 3 U d.patch
+
+qseries again, but with color
+
+ $ hg --config extensions.color= --config color.mode=ansi qseries -v --color=always
+ 0 G \x1b[0;30;1mnew.patch\x1b[0m (esc)
+ 1 G \x1b[0;30;1mb.patch\x1b[0m (esc)
+ 2 A \x1b[0;34;1;4mc.patch\x1b[0m (esc)
+ 3 U \x1b[0;30;1md.patch\x1b[0m (esc)
+
+ $ hg qguard d.patch +2
+
+new.patch, b.patch: Guarded. c.patch: Applied. d.patch: Guarded.
+
+ $ hg qseries -v
+ 0 G new.patch
+ 1 G b.patch
+ 2 A c.patch
+ 3 G d.patch
+
+ $ qappunappv()
+ > {
+ > for command in qapplied "qapplied -v" qunapplied "qunapplied -v"; do
+ > echo % hg $command
+ > hg $command
+ > done
+ > }
+
+ $ hg qpop -a
+ popping c.patch
+ patch queue now empty
+ $ hg qguard -l
+ new.patch: +1 +2 -3
+ b.patch: +2
+ c.patch: unguarded
+ d.patch: +2
+ $ qappunappv
+ % hg qapplied
+ % hg qapplied -v
+ % hg qunapplied
+ c.patch
+ % hg qunapplied -v
+ 0 G new.patch
+ 1 G b.patch
+ 2 U c.patch
+ 3 G d.patch
+ $ hg qselect 1
+ number of unguarded, unapplied patches has changed from 1 to 2
+ $ qappunappv
+ % hg qapplied
+ % hg qapplied -v
+ % hg qunapplied
+ new.patch
+ c.patch
+ % hg qunapplied -v
+ 0 U new.patch
+ 1 G b.patch
+ 2 U c.patch
+ 3 G d.patch
+ $ hg qpush -a
+ applying new.patch
+ skipping b.patch - guarded by '+2'
+ applying c.patch
+ skipping d.patch - guarded by '+2'
+ now at: c.patch
+ $ qappunappv
+ % hg qapplied
+ new.patch
+ c.patch
+ % hg qapplied -v
+ 0 A new.patch
+ 1 G b.patch
+ 2 A c.patch
+ % hg qunapplied
+ % hg qunapplied -v
+ 3 G d.patch
+ $ hg qselect 2
+ number of unguarded, unapplied patches has changed from 0 to 1
+ number of guarded, applied patches has changed from 1 to 0
+ $ qappunappv
+ % hg qapplied
+ new.patch
+ c.patch
+ % hg qapplied -v
+ 0 A new.patch
+ 1 U b.patch
+ 2 A c.patch
+ % hg qunapplied
+ d.patch
+ % hg qunapplied -v
+ 3 U d.patch
+
+ $ for patch in `hg qseries`; do
+ > echo % hg qapplied $patch
+ > hg qapplied $patch
+ > echo % hg qunapplied $patch
+ > hg qunapplied $patch
+ > done
+ % hg qapplied new.patch
+ new.patch
+ % hg qunapplied new.patch
+ b.patch
+ d.patch
+ % hg qapplied b.patch
+ new.patch
+ % hg qunapplied b.patch
+ d.patch
+ % hg qapplied c.patch
+ new.patch
+ c.patch
+ % hg qunapplied c.patch
+ d.patch
+ % hg qapplied d.patch
+ new.patch
+ c.patch
+ % hg qunapplied d.patch
+
+
+hg qseries -m: only b.patch should be shown
+the guards file was not ignored in the past
+
+ $ hg qdelete -k b.patch
+ $ hg qseries -m
+ b.patch
+
+hg qseries -m with color
+
+ $ hg --config extensions.color= --config color.mode=ansi qseries -m --color=always
+ \x1b[0;31;1mb.patch\x1b[0m (esc)
+
+
+excercise cornercases in "qselect --reapply"
+
+ $ hg qpop -a
+ popping c.patch
+ popping new.patch
+ patch queue now empty
+ $ hg qguard -- new.patch -not-new
+ $ hg qguard -- c.patch -not-c
+ $ hg qguard -- d.patch -not-d
+ $ hg qpush -a
+ applying new.patch
+ applying c.patch
+ applying d.patch
+ patch d.patch is empty
+ now at: d.patch
+ $ hg qguard -l
+ new.patch: -not-new
+ c.patch: -not-c
+ d.patch: -not-d
+ $ hg qselect --reapply not-d
+ popping guarded patches
+ popping d.patch
+ now at: c.patch
+ reapplying unguarded patches
+ cannot push 'd.patch' - guarded by '-not-d'
+ $ hg qser -v
+ 0 A new.patch
+ 1 A c.patch
+ 2 G d.patch
+ $ hg qselect --reapply -n
+ guards deactivated
+ $ hg qpush
+ applying d.patch
+ patch d.patch is empty
+ now at: d.patch
+ $ hg qser -v
+ 0 A new.patch
+ 1 A c.patch
+ 2 A d.patch
+ $ hg qselect --reapply not-c
+ popping guarded patches
+ popping d.patch
+ popping c.patch
+ now at: new.patch
+ reapplying unguarded patches
+ applying d.patch
+ patch d.patch is empty
+ now at: d.patch
+ $ hg qser -v
+ 0 A new.patch
+ 1 G c.patch
+ 2 A d.patch
+ $ hg qselect --reapply not-new
+ popping guarded patches
+ popping d.patch
+ popping new.patch
+ patch queue now empty
+ reapplying unguarded patches
+ applying c.patch
+ applying d.patch
+ patch d.patch is empty
+ now at: d.patch
+ $ hg qser -v
+ 0 G new.patch
+ 1 A c.patch
+ 2 A d.patch