Mercurial > evolve
diff docs/tutorial/testlib/exchange-obsmarker-util.sh @ 3376:aad37ffd7d58
doc: import the training support
Import the training support which was stored in a private-repository before.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Mon, 08 Jan 2018 11:46:53 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/tutorial/testlib/exchange-obsmarker-util.sh Mon Jan 08 11:46:53 2018 +0100 @@ -0,0 +1,141 @@ +#!/bin/sh +# setup config and various utility to test obsolescence marker exchanges tests + +cat >> $HGRCPATH <<EOF +[web] +# We test http pull and push, drop authentication requirement +push_ssl = false +allow_push = * + +[ui] +# simpler log output +logtemplate ="{node|short} ({phase}): {desc}\n" + +[phases] +# non publishing server +publish=False + +[experimental] +# reduce output changes +bundle2-output-capture=True +# enable evolution +evolution=all +evolution.effect-flags = yes + +[extensions] +# we need to strip some changeset for some test cases +hgext.strip= + +[alias] +# fix date used to create obsolete markers. +debugobsolete=debugobsolete -d '0 0' + +[extensions] +hgext.strip= +EOF +echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH + +mkcommit() { + echo "$1" > "$1" + hg add "$1" + hg ci -m "$1" +} +getid() { + hg log --hidden --template '{node}\n' --rev "$1" +} + +setuprepos() { + echo creating test repo for test case $1 + mkdir $1 + cd $1 + echo - pulldest + hg init pushdest + cd pushdest + mkcommit O + hg phase --public . + cd .. + echo - main + hg clone -q pushdest main + echo - pushdest + hg clone -q main pulldest + echo 'cd into `main` and proceed with env setup' +} + +inspect_obsmarkers (){ + # This exist as its own function to help the evolve extension reuse the tests as is. + # The evolve extensions version will includes more advances query (eg: + # related to obsmarkers discovery) to this. + echo 'obsstore content' + echo '================' + hg debugobsolete + echo 'obshashtree' + echo '===========' + hg debugobsrelsethashtree + echo 'obshashrange' + echo '============' + hg debugobshashrange --subranges --rev 'head()' +} + +dotest() { + # dotest TESTNAME [TARGETNODE] [PUSHFLAGS+] + # + # test exchange for the given test case. + # + # This function performs push and pull in all directions through all + # protocols and display the resulting obsolescence markers on all sides. + + testcase=$1 + shift + target="$1" + if [ $# -gt 0 ]; then + shift + fi + targetnode="" + desccall="" + cd $testcase + echo "## Running testcase $testcase" + if [ -n "$target" ]; then + desccall="desc("\'"$target"\'")" + targetnode="`hg -R main id -qr \"$desccall\"`" + echo "# testing echange of \"$target\" ($targetnode)" + fi + echo "## initial state" + echo "# obstore: main" + hg -R main debugobsolete | sort + echo "# obstore: pushdest" + hg -R pushdest debugobsolete | sort + echo "# obstore: pulldest" + hg -R pulldest debugobsolete | sort + + if [ -n "$target" ]; then + echo "## pushing \"$target\"" from main to pushdest + hg -R main push -r "$desccall" $@ pushdest + else + echo "## pushing from main to pushdest" + hg -R main push pushdest $@ + fi + echo "## post push state" + echo "# obstore: main" + hg -R main debugobsolete | sort + echo "# obstore: pushdest" + hg -R pushdest debugobsolete | sort + echo "# obstore: pulldest" + hg -R pulldest debugobsolete | sort + if [ -n "$target" ]; then + echo "## pulling \"$targetnode\"" from main into pulldest + hg -R pulldest pull -r $targetnode $@ main + else + echo "## pulling from main into pulldest" + hg -R pulldest pull main $@ + fi + echo "## post pull state" + echo "# obstore: main" + hg -R main debugobsolete | sort + echo "# obstore: pushdest" + hg -R pushdest debugobsolete | sort + echo "# obstore: pulldest" + hg -R pulldest debugobsolete | sort + + cd .. + +}