run-tests
151 lines
| 2.9 KiB
| text/plain
|
TextLexer
/ tests / run-tests
|
r544 | #!/bin/sh -e | ||
|
r331 | |||
|
r798 | LANG="C"; export LANG | ||
LC_CTYPE="C"; export LC_CTYPE | ||||
LC_NUMERIC="C"; export LC_NUMERIC | ||||
LC_TIME="C"; export LC_TIME | ||||
LC_COLLATE="C"; export LC_COLLATE | ||||
LC_MONETARY="C"; export LC_MONETARY | ||||
LC_MESSAGES="C"; export LC_MESSAGES | ||||
LC_PAPER="C"; export LC_PAPER | ||||
LC_NAME="C"; export LC_NAME | ||||
LC_ADDRESS="C"; export LC_ADDRESS | ||||
LC_TELEPHONE="C"; export LC_TELEPHONE | ||||
LC_MEASUREMENT="C"; export LC_MEASUREMENT | ||||
LC_IDENTIFICATION="C"; export LC_IDENTIFICATION | ||||
LC_ALL=""; export LC_ALL | ||||
TZ=GMT; export TZ | ||||
HGEDITOR=true; export HGEDITOR | ||||
HGMERGE=true; export HGMERGE | ||||
HGUSER="test"; export HGUSER | ||||
|
r488 | |||
|
r489 | umask 022 | ||
|
r798 | if [ "$[1+1]" = "2" ]; then | ||
use_arithmetic=true | ||||
else | ||||
use_arithmetic=false | ||||
fi | ||||
|
r331 | tests=0 | ||
failed=0 | ||||
|
r798 | |||
HGTMP="" | ||||
cleanup_exit() { | ||||
rm -rf "$HGTMP" | ||||
exit $1 | ||||
} | ||||
# Remove temporary files even if we get interrupted | ||||
trap "cleanup_exit 255" TERM KILL INT QUIT ABRT | ||||
HGTMP="${TMPDIR-/tmp}/hgtests.$RANDOM.$RANDOM.$RANDOM.$$" | ||||
(umask 077 && mkdir "$HGTMP") || { | ||||
echo "Could not create temporary directory! Exiting." 1>&2 | ||||
exit 1 | ||||
} | ||||
TESTDIR="$PWD" | ||||
|
r331 | |||
|
r473 | if [ -d /usr/lib64 ]; then | ||
lib=lib64 | ||||
else | ||||
lib=lib | ||||
fi | ||||
|
r798 | INST="$HGTMP/install" | ||
|
r397 | cd .. | ||
|
r798 | if ${PYTHON:-python} setup.py install --home="$INST" > tests/install.err 2>&1 | ||
then | ||||
rm tests/install.err | ||||
mv "$INST/bin/hg" "$INST/bin/hg.real" | ||||
( | ||||
echo '#!/bin/sh' | ||||
echo 'echo "+ hg $@"' | ||||
echo 'exec hg.real "$@"' | ||||
) > "$INST/bin/hg" | ||||
chmod 755 "$INST/bin/hg" | ||||
else | ||||
|
r398 | cat tests/install.err | ||
|
r798 | cleanup_exit 1 | ||
|
r398 | fi | ||
|
r798 | cd "$TESTDIR" | ||
|
r397 | |||
|
r798 | PATH="$INST/bin:$PATH"; export PATH | ||
PYTHONPATH="$INST/$lib/python"; export PYTHONPATH | ||||
run_one() { | ||||
rm -f "$1.err" | ||||
|
r331 | |||
|
r798 | mkdir "$HGTMP/$1" | ||
cd "$HGTMP/$1" | ||||
|
r331 | fail=0 | ||
|
r798 | HOME="$HGTMP/$1"; export HOME | ||
OUT="$HGTMP/$1.out" | ||||
OUTOK="$TESTDIR/$1.out" | ||||
ERR="$TESTDIR/$1.err" | ||||
|
r362 | |||
|
r798 | if "$TESTDIR/$1" > "$OUT" 2>&1; then | ||
: no error | ||||
else | ||||
echo "$1 failed with error code $?" | ||||
|
r331 | fail=1 | ||
fi | ||||
|
r362 | |||
|
r798 | if [ -s "$OUT" -a ! -s "$OUTOK" ] ; then | ||
cp "$OUT" "$ERR" | ||||
echo | ||||
echo "$1 generated unexpected output:" | ||||
cat "$ERR" | ||||
|
r331 | fail=1 | ||
|
r798 | elif [ -r "$OUTOK" ]; then | ||
if diff -u "$OUTOK" "$OUT" > /dev/null; then | ||||
: no differences | ||||
else | ||||
cp "$OUT" "$ERR" | ||||
echo | ||||
echo "$1 output changed:" | ||||
diff -u "$OUTOK" "$ERR" || true | ||||
fail=1 | ||||
fi | ||||
|
r331 | fi | ||
|
r798 | cd "$TESTDIR" | ||
rm -f "$HGTMP/$1.out" | ||||
rm -rf "$HGTMP/$1" | ||||
|
r362 | return $fail | ||
} | ||||
|
r331 | |||
|
r798 | TESTS="$@" | ||
if [ -z "$TESTS" ] ; then | ||||
|
r362 | TESTS=`ls test-* | grep -Ev "\.|~"` | ||
fi | ||||
for f in $TESTS ; do | ||||
echo -n "." | ||||
|
r798 | if $use_arithmetic; then | ||
run_one $f || failed=$[$failed + 1] | ||||
tests=$[$tests + 1] | ||||
else | ||||
run_one $f || failed=1 | ||||
|
r362 | fi | ||
|
r331 | done | ||
|
r798 | if $use_arithmetic; then | ||
echo | ||||
echo "Ran $tests tests, $failed failed." | ||||
|
r331 | |||
|
r798 | if [ $failed -gt 0 ] ; then | ||
cleanup_exit 1 | ||||
fi | ||||
else | ||||
echo | ||||
if [ "$failed" = "1" ] ; then | ||||
echo "Ran tests, at least one failed." | ||||
cleanup_exit 1 | ||||
else | ||||
echo "Ran tests, none failed." | ||||
fi | ||||
|
r331 | fi | ||
|
r798 | cleanup_exit 0 | ||