diff --git a/tests/test-parentrevspec b/tests/test-parentrevspec new file mode 100755 --- /dev/null +++ b/tests/test-parentrevspec @@ -0,0 +1,69 @@ +#!/bin/sh + +commit() +{ + msg=$1 + p1=$2 + p2=$3 + + if [ "$p1" ]; then + hg up -qC $p1 + fi + + if [ "$p2" ]; then + HGMERGE=true hg merge -q $p2 + fi + + echo >> foo + + hg commit -d '0 0' -qAm "$msg" foo +} + +hg init repo +cd repo + +echo '[extensions]' > .hg/hgrc +echo 'hgext.parentrevspec =' >> .hg/hgrc + +commit '0: add foo' +commit '1: change foo 1' +commit '2: change foo 2a' +commit '3: change foo 3a' +commit '4: change foo 2b' 1 +commit '5: merge' 3 4 +commit '6: change foo again' + +hg log --template '#rev#:#node|short# #parents#\n' +echo + +lookup() +{ + for rev in "$@"; do + printf "$rev: " + hg id -nr $rev + done + true +} + +tipnode=`hg id -ir tip` + +echo 'should work with tag/branch/node/rev' +for r in tip default $tipnode 6; do + lookup $r^ +done +echo + +echo 'some random lookups' +lookup 6^^ 6^^^ 6^^^^ 6^^^^^ 6^^^^^^ 6^1 6^2 6^^2 6^1^2 6^^3 +lookup 6~ 6~1 6~2 6~3 6~4 6~5 6~42 6~1^2 6~1^2~2 +echo + +echo 'with a tag "6^" pointing to rev 1' +hg tag -l -r 1 6^ +lookup 6^ 6^1 6~1 6^^ +echo + +echo 'with a tag "foo^bar" pointing to rev 2' +hg tag -l -r 2 foo^bar +lookup foo^bar foo^bar^ +