view tests/run-tests @ 635:85e2209d401c

Protocol switch from using generators to stream-like objects. This allows the the pull side to precisely control how much data is read so that another encapsulation layer is not needed. An http client gets a response with a finite size. Because ssh clients need to keep the stream open, we must not read more data than is sent in a response. But due to the streaming nature of the changegroup scheme, only the piece that's parsing the data knows how far it's allowed to read. This means the generator scheme isn't fine-grained enough. Instead we need file-like objects with a read(x) method. This switches everything for push/pull over to using file-like objects rather than generators.
author Matt Mackall <mpm@selenic.com>
date Wed, 06 Jul 2005 22:20:12 -0800
parents d2994b5298fb
children 7e4843b7efd2
line wrap: on
line source

#!/bin/sh -e

export LANG=C
export LC_CTYPE="C"
export LC_NUMERIC="C"
export LC_TIME="C"
export LC_COLLATE="C"
export LC_MONETARY="C"
export LC_MESSAGES="C"
export LC_PAPER="C"
export LC_NAME="C"
export LC_ADDRESS="C"
export LC_TELEPHONE="C"
export LC_MEASUREMENT="C"
export LC_IDENTIFICATION="C"
export LC_ALL=""

umask 022

tests=0
failed=0
H=$PWD

if [ -d /usr/lib64 ]; then
    lib=lib64
else
    lib=lib
fi

TESTPATH=$PWD/install/bin
export PATH=$TESTPATH:$PATH
export PYTHONPATH=$PWD/install/$lib/python

rm -rf install
cd ..
${PYTHON:-python} setup.py install --home=tests/install > tests/install.err
if [ $? != 0 ] ; then
    cat tests/install.err
fi
cd $H
rm install.err

function run_one
{
    rm -f $1.err
    export TZ=GMT
    D=`mktemp -d`
    if [ "$D" = "" ] ; then
	echo mktemp failed!
    fi

    cd $D
    fail=0
    export HOME=$D

    if ! $H/$1 > .out 2>&1 ; then
	echo $1 failed with error code $?
	fail=1
    fi

    if [ -s .out -a ! -r $H/$1.out ] ; then
	echo $1 generated unexpected output:
	cat .out
	cp .out $H/$1.err
	fail=1
    elif [ -r $H/$1.out ] && ! diff -u $H/$1.out .out > /dev/null ; then
	echo $1 output changed:
	diff -u $H/$1.out .out && true
	cp .out $H/$1.err
	fail=1
    fi

    cd $H
    rm -r $D
    return $fail
}

TESTS=$@
if [ "$TESTS" = "" ] ; then
    TESTS=`ls test-* | grep -Ev "\.|~"`
fi

for f in $TESTS ; do
    echo -n "."
    if ! run_one $f ; then
	failed=$[$failed + 1]
    fi
    tests=$[$tests + 1]
done

rm -rf install

echo
echo Ran $tests tests, $failed failed

if [ $failed -gt 0 ] ; then
    exit 1
fi