diff --git a/tests/test-mq-caches b/tests/test-mq-caches 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 +