tests/test-mq-caches.t
changeset 11897 0e4bbe18ff95
parent 10119 bb5ea66789e3
child 12156 4c94b6d0fb1c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-mq-caches.t	Sun Aug 15 22:07:23 2010 +0900
@@ -0,0 +1,124 @@
+  $ branches=.hg/branchheads.cache
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo 'mq =' >> $HGRCPATH
+
+  $ show_branch_cache()
+  > {
+  >     # force cache (re)generation
+  >     hg log -r does-not-exist 2> /dev/null
+  >     hg log -r tip --template 'tip: {rev}\n'
+  >     if [ -f $branches ]; then
+  >       sort $branches
+  >     else
+  >       echo No branch cache
+  >     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
+
+
+mq patch on an empty repo
+
+  $ hg qnew p1
+  $ show_branch_cache
+  tip: 0
+  No branch cache
+
+  $ echo > pfile
+  $ hg add pfile
+  $ hg qrefresh -m 'patch 1'
+  $ show_branch_cache
+  tip: 0
+  No branch cache
+
+some regular revisions
+
+  $ hg qpop
+  popping p1
+  patch queue now empty
+  $ 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
+  tip: 1
+  3f910abad313ff802d3a23a7529433872df9b3ae 1
+  3f910abad313ff802d3a23a7529433872df9b3ae bar
+  9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
+
+add some mq patches
+
+  $ hg qpush
+  applying p1
+  now at: p1
+  $ show_branch_cache
+  tip: 2
+  3f910abad313ff802d3a23a7529433872df9b3ae 1
+  3f910abad313ff802d3a23a7529433872df9b3ae bar
+  9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
+
+  $ hg qnew p2
+  $ echo foo > .hg/branch
+  $ echo foo2 >> foo
+  $ hg qrefresh -m 'patch 2'
+  $ show_branch_cache 1
+  tip: 3
+  3f910abad313ff802d3a23a7529433872df9b3ae 1
+  3f910abad313ff802d3a23a7529433872df9b3ae bar
+  9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
+  branch foo: 3
+  branch bar: 2
+
+removing the cache
+
+  $ rm $branches
+  $ show_branch_cache 1
+  tip: 3
+  3f910abad313ff802d3a23a7529433872df9b3ae 1
+  3f910abad313ff802d3a23a7529433872df9b3ae bar
+  9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
+  branch foo: 3
+  branch bar: 2
+
+importing rev 1 (the cache now ends in one of the patches)
+
+  $ hg qimport -r 1 -n p0
+  $ show_branch_cache 1
+  tip: 3
+  3f910abad313ff802d3a23a7529433872df9b3ae 1
+  3f910abad313ff802d3a23a7529433872df9b3ae bar
+  9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
+  branch foo: 3
+  branch bar: 2
+  $ hg log -r qbase --template 'qbase: {rev}\n'
+  qbase: 1
+
+detect an invalid cache
+
+  $ hg qpop -a
+  popping p2
+  popping p1
+  popping p0
+  patch queue now empty
+  $ hg qpush -a
+  applying p0
+  applying p1
+  applying p2
+  now at: p2
+  $ show_branch_cache
+  tip: 3
+  9539f35bdc80732cc9a3f84e46508f1ed1ec8cff 0
+  9539f35bdc80732cc9a3f84e46508f1ed1ec8cff foo
+