diff tests/test-mq-caches @ 3486:fbf8320f25c8

make mq play nicely with the branch cache - if no patches are applied, don't do anything different - if the cache includes valid data from one of the patch revisions, use the cache, but don't save anything new - if the cache has data from before the patch revisions only, save what the list of branches would be without the patch revisions
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Mon, 23 Oct 2006 23:32:56 -0300
parents
children 89820e9b94f2
line wrap: on
line diff
new file mode 100755
--- /dev/null
+++ b/tests/test-mq-caches
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+echo '[extensions]' >> $HGRCPATH
+echo 'hgext.mq=' >> $HGRCPATH
+
+show_branch_cache()
+{
+    branches=.hg/branches.cache
+    hg log -r tip --template 'tip: #rev#\n'
+    if [ -f $branches ]; then
+	sort $branches
+    else
+	echo No $branches
+    fi
+    if [ "$1" = 1 ]; then
+	for b in foo bar; do
+	    hg log -r $b --template "branch $b: "'#rev#\n'
+	done
+    fi
+}
+
+hg init a
+cd a
+hg qinit -c
+
+echo '# mq patch on an empty repo'
+hg qnew p1
+show_branch_cache
+
+echo > pfile
+hg add pfile
+hg qrefresh -m 'patch 1'
+show_branch_cache
+
+echo
+echo '# some regular revisions'
+hg qpop
+echo foo > foo
+hg add foo
+echo foo > .hg/branch
+hg ci -m 'branch foo' -d '1000000 0'
+
+echo bar > bar
+hg add bar
+echo bar > .hg/branch
+hg ci -m 'branch bar' -d '1000000 0'
+show_branch_cache
+
+echo
+echo '# add some mq patches'
+hg qpush
+show_branch_cache
+
+hg qnew p2
+echo foo > .hg/branch
+echo foo2 >> foo
+hg qrefresh -m 'patch 2'
+show_branch_cache 1
+
+echo
+echo '# removing the cache'
+rm -f .hg/branches.cache
+show_branch_cache 1
+
+echo
+echo '# importing rev 1 (the cache now ends in one of the patches)'
+hg qimport -r 1 -n p0
+show_branch_cache 1
+hg log -r qbase --template 'qbase: #rev#\n'
+
+echo
+echo '# detect an invalid cache'
+hg qpop -a
+hg qpush -a
+show_branch_cache
+