tests/_exc-util.sh
author Pierre-Yves David <pierre-yves.david@fb.com>
Mon, 03 Mar 2014 14:03:41 -0800
changeset 831 a6af6919888d
parent 830 f3b3a09ba312
child 832 46e81a5d2d94
permissions -rwxr-xr-x
exchange: automate the testing process too we now have: dotest TESTNAME [TARGETNODE]

#!/bin/sh

cat >> $HGRCPATH <<EOF
[web]
push_ssl = false
allow_push = *
[ui]
logtemplate ="{node|short} ({phase}): {desc}\n"
[phases]
publish=False
[extensions]
hgext.rebase=
EOF
echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH

mkcommit() {
   echo "$1" > "$1"
   hg add "$1"
   hg ci -m "$1"
}
getid() {
   hg id --hidden --debug -ir "$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'
}

dotest() {
# dotest TESTNAME [TARGETNODE]

    testcase=$1
    target="$2"
    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
    echo "# obstore: pushdest"
    hg -R pushdest debugobsolete
    echo "# obstore: pulldest"
    hg -R pulldest debugobsolete

    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
    echo "# obstore: pushdest"
    hg -R pushdest debugobsolete
    echo "# obstore: pulldest"
    hg -R pulldest debugobsolete
    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
    echo "# obstore: pushdest"
    hg -R pushdest debugobsolete
    echo "# obstore: pulldest"
    hg -R pulldest debugobsolete

    cd ..

}