warning: use 'divergent', not 'contentdivergent' on old Mercurial
This was just an oversight in f6517779a7c4 (warning: rename warning
message, 2017-08-24).
#!/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 ..
}