##// END OF EJS Templates
Fix broken hgignore tests due to full path showing up in output.
Fix broken hgignore tests due to full path showing up in output.

File last commit:

r1952:f4df34b6 default
r2009:182f5008 default
Show More
run-tests
159 lines | 3.2 KiB | text/plain | TextLexer
#!/bin/sh -e
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
HGRCPATH=""; export HGRCPATH
if [ `echo -n HG` == "-n HG" ]
then
ECHO_N=echo
NNL="\c"
else
ECHO_N="echo -n"
NNL=
fi
umask 022
tests=0
failed=0
HGTMP=""
cleanup_exit() {
rm -rf "$HGTMP"
}
# Remove temporary files even if we get interrupted
trap "cleanup_exit" 0 # normal exit
trap "exit 255" 1 2 3 6 15 # HUP INT QUIT ABRT TERM
HGTMP="${TMPDIR-/tmp}/hgtests.$RANDOM.$RANDOM.$RANDOM.$$"
(umask 077 && mkdir "$HGTMP") || {
echo "Could not create temporary directory! Exiting." 1>&2
exit 1
}
TESTDIR="$PWD"
export TESTDIR
INST="$HGTMP/install"
PYTHONDIR="$INST/lib/python"
cd ..
if ${PYTHON-python} setup.py install --home="$INST" \
--install-lib="$PYTHONDIR" > tests/install.err 2>&1
then
rm tests/install.err
else
cat tests/install.err
exit 1
fi
cd "$TESTDIR"
BINDIR="$INST/bin"
PATH="$BINDIR:$PATH"; export PATH
if [ -n "$PYTHON" ]; then
{
echo "#!/bin/sh"
echo "exec \"$PYTHON"'" "$@"'
} > "$BINDIR/python"
chmod 755 "$BINDIR/python"
fi
PYTHONPATH="$PYTHONDIR"; export PYTHONPATH
run_one() {
rm -f "$1.err"
mkdir "$HGTMP/$1"
cd "$HGTMP/$1"
fail=0
HOME="$HGTMP/$1"; export HOME
OUT="$HGTMP/$1.out"
OUTOK="$TESTDIR/$1.out"
ERR="$TESTDIR/$1.err"
if "$TESTDIR/$1" > "$OUT" 2>&1; then
: no error
else
echo "$1 failed with error code $?"
fail=1
fi
if [ -s "$OUT" -a ! -s "$OUTOK" ] ; then
cp "$OUT" "$ERR"
echo
echo "$1 generated unexpected output:"
cat "$ERR"
fail=1
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
fi
cd "$TESTDIR"
rm -f "$HGTMP/$1.out"
rm -rf "$HGTMP/$1"
return $fail
}
# list of prerequisite programs
# stuff from coreutils (cat, rm, etc) are not tested
prereqs="python merge diff grep unzip gunzip bunzip2 sed"
missing=''
for pre in $prereqs ; do
if type $pre > /dev/null 2>&1 ; then
: prereq exists
else
missing="$pre $missing"
fi
done
if [ "$missing" != '' ] ; then
echo "ERROR: the test suite needs some programs to execute correctly."
echo "The following programs are missing: "
for pre in $missing; do
echo " $pre"
done
exit 1
fi
TESTS="$*"
if [ -z "$TESTS" ] ; then
TESTS=`ls test-* | grep -v "[.~]"`
fi
for f in $TESTS ; do
$ECHO_N ".${NNL}"
run_one $f || failed=`expr $failed + 1`
tests=`expr $tests + 1`
done
echo
echo "Ran $tests tests, $failed failed."
if [ $failed -gt 0 ] ; then
exit 1
fi
exit 0