tests/_exc-util.sh
author Faheem Mitha <faheem@faheem.info>
Sat, 11 Oct 2014 02:27:21 +0530
changeset 1127 87625964c333
parent 1089 cdd22a5e5ef1
child 1185 cc3e68120185
permissions -rwxr-xr-x
debian: remove .PHONY line completely This does not work in the case of implicit pattern matching rules as used by dh. Consider this example from Geoffrey Thomas: $ ls -l total 16 -rw-r--r-- 1 faheem faheem 17 Aug 16 20:27 blue.c -rw-r--r-- 1 faheem faheem 17 Aug 16 20:27 green.c -rw-r--r-- 1 faheem faheem 35 Aug 16 20:26 Makefile -rw-r--r-- 1 faheem faheem 17 Aug 16 20:27 red.c $ cat Makefile %: %.c gcc -o $@ $< .PHONY: blue $ make red gcc -o red red.c $ make green gcc -o green green.c $ make blue make: Nothing to be done for blue'. The Make manual (http://www.gnu.org/software/make/manual/make.html#Phony-Targets) says Since it knows that phony targets do not name actual files that could be remade from other files, make skips the implicit rule search for phony targets (see Implicit Rules). Thanks to the good folks on #debian-mentors on OFTC for instruction and explanation in these matters.

#!/bin/sh

cat >> $HGRCPATH <<EOF
[web]
push_ssl = false
allow_push = *

[ui]
logtemplate ="{node|short} ({phase}): {desc}\n"

[phases]
publish=False

[experimental]
verbose-obsolescence-exchange=false
bundle2-exp=true

[alias]
debugobsolete=debugobsolete -d '0 0'

[extensions]
hgext.strip=
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 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'
}

dotest() {
# dotest TESTNAME [TARGETNODE]

    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 ..

}