##// END OF EJS Templates
let run-tests run optional code coverage tests....
let run-tests run optional code coverage tests. to enable, set env var TEST_COVERAGE to non-empty string. run-tests will print report after running. after coverage run, file tests/.coverage will contain coverage data. use tests/coverage.py to get more info, like annotated source code.

File last commit:

r2068:4a49daa3 default
r2068:4a49daa3 default
Show More
run-tests
187 lines | 4.0 KiB | text/plain | TextLexer
Thomas Arendsen Hein
Remove bashisms and use /bin/sh instead of /bin/bash....
r544 #!/bin/sh -e
Vadim Gelfer
let run-tests run optional code coverage tests....
r2068 #
# environment variables:
#
# TEST_COVERAGE - set non-empty if you want to print test coverage report
# COVERAGE_STDLIB - set non-empty to report coverage of standard library
mpm@selenic.com
Add a simple testing framework...
r331
Thomas Arendsen Hein
Make tests work on Solaris:...
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
Vadim Gelfer
add HGRCPATH env var, list of places to look for hgrc files....
r1951 HGRCPATH=""; export HGRCPATH
mpm@selenic.com
[PATCH] Set locale before run-tests does anything...
r488
Thomas Arendsen Hein
Use [ x = y ] instead of [ x == y ] in shell scripts.
r2023 if [ `echo -n HG` = "-n HG" ]
TK Soh
tests: fix portability issue for echo -n
r1952 then
ECHO_N=echo
NNL="\c"
else
ECHO_N="echo -n"
NNL=
fi
Peter van Dijk
small solaris portability fixes from John Levon <levon@movementarian.org>
r1925
mpm@selenic.com
[PATCH] umask for run-tests...
r489 umask 022
mpm@selenic.com
Add a simple testing framework...
r331 tests=0
failed=0
Thomas Arendsen Hein
Make tests work on Solaris:...
r798
HGTMP=""
cleanup_exit() {
rm -rf "$HGTMP"
}
# Remove temporary files even if we get interrupted
Thomas Arendsen Hein
Cleaned up trap handling in run-tests, too.
r835 trap "cleanup_exit" 0 # normal exit
trap "exit 255" 1 2 3 6 15 # HUP INT QUIT ABRT TERM
Thomas Arendsen Hein
Make tests work on Solaris:...
r798
HGTMP="${TMPDIR-/tmp}/hgtests.$RANDOM.$RANDOM.$RANDOM.$$"
(umask 077 && mkdir "$HGTMP") || {
echo "Could not create temporary directory! Exiting." 1>&2
exit 1
}
TESTDIR="$PWD"
Peter van Dijk
fix testsuite for freebsd and one timingissue
r1923 export TESTDIR
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 INST="$HGTMP/install"
Robin Farine
fix run-tests' PYTHONPATH...
r1558 PYTHONDIR="$INST/lib/python"
mpm@selenic.com
From: Andrew Thompson <andrewkt@aktzero.com>...
r397 cd ..
Robin Farine
fix run-tests' PYTHONPATH...
r1558 if ${PYTHON-python} setup.py install --home="$INST" \
--install-lib="$PYTHONDIR" > tests/install.err 2>&1
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 then
rm tests/install.err
else
mpm@selenic.com
Quiet successful test install in run-tests...
r398 cat tests/install.err
Thomas Arendsen Hein
Cleaned up trap handling in run-tests, too.
r835 exit 1
mpm@selenic.com
Quiet successful test install in run-tests...
r398 fi
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 cd "$TESTDIR"
mpm@selenic.com
From: Andrew Thompson <andrewkt@aktzero.com>...
r397
Vadim Gelfer
let run-tests run optional code coverage tests....
r2068 BINDIR="$INST/bin"; export BINDIR
if [ -n "$TEST_COVERAGE" ]; then
COVERAGE_FILE="$TESTDIR/.coverage"; export COVERAGE_FILE
rm -f "$COVERAGE_FILE"
mv "$BINDIR/hg" "$BINDIR/hg.py"
{
echo '#!/bin/sh'
echo "exec \"${PYTHON-python}\" \"$TESTDIR/coverage.py\"" \
"-x \"$BINDIR/hg.py\" \"\$@\""
} > "$BINDIR/hg"
chmod 700 "$BINDIR/hg"
fi
Thomas Arendsen Hein
Make #!/usr/bin/env python in test-bdiff run the specified python version.
r1878 PATH="$BINDIR:$PATH"; export PATH
if [ -n "$PYTHON" ]; then
{
echo "#!/bin/sh"
echo "exec \"$PYTHON"'" "$@"'
} > "$BINDIR/python"
chmod 755 "$BINDIR/python"
fi
Robin Farine
fix run-tests' PYTHONPATH...
r1558 PYTHONPATH="$PYTHONDIR"; export PYTHONPATH
Thomas Arendsen Hein
Make tests work on Solaris:...
r798
run_one() {
rm -f "$1.err"
mpm@selenic.com
Add a simple testing framework...
r331
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 mkdir "$HGTMP/$1"
cd "$HGTMP/$1"
mpm@selenic.com
Add a simple testing framework...
r331 fail=0
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 HOME="$HGTMP/$1"; export HOME
OUT="$HGTMP/$1.out"
OUTOK="$TESTDIR/$1.out"
ERR="$TESTDIR/$1.err"
mpm@selenic.com
run-tests: run tests given on the command line...
r362
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 if "$TESTDIR/$1" > "$OUT" 2>&1; then
Thomas Arendsen Hein
Use tabs instead of spaces where apropriate.
r803 : no error
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 else
echo "$1 failed with error code $?"
mpm@selenic.com
Add a simple testing framework...
r331 fail=1
fi
mpm@selenic.com
run-tests: run tests given on the command line...
r362
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 if [ -s "$OUT" -a ! -s "$OUTOK" ] ; then
cp "$OUT" "$ERR"
echo
echo "$1 generated unexpected output:"
cat "$ERR"
mpm@selenic.com
Add a simple testing framework...
r331 fail=1
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 elif [ -r "$OUTOK" ]; then
Thomas Arendsen Hein
Use tabs instead of spaces where apropriate.
r803 if diff -u "$OUTOK" "$OUT" > /dev/null; then
: no differences
else
Thomas Arendsen Hein
Removed special FIXME handling in run-tests, added bug info to .out files.
r833 cp "$OUT" "$ERR"
echo
echo "$1 output changed:"
diff -u "$OUTOK" "$ERR" || true
fail=1
Thomas Arendsen Hein
Use tabs instead of spaces where apropriate.
r803 fi
mpm@selenic.com
Add a simple testing framework...
r331 fi
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 cd "$TESTDIR"
rm -f "$HGTMP/$1.out"
rm -rf "$HGTMP/$1"
mpm@selenic.com
run-tests: run tests given on the command line...
r362 return $fail
}
mpm@selenic.com
Add a simple testing framework...
r331
Thomas Arendsen Hein
Cleanup of tabs and trailing spaces.
r1308 # list of prerequisite programs
eric@localhost.localdomain
Add checks for programs which are required for the test suite to run....
r1279 # stuff from coreutils (cat, rm, etc) are not tested
Soh Tk-r28629
tests: add bunzip2 to prerequisite list
r1949 prereqs="python merge diff grep unzip gunzip bunzip2 sed"
eric@localhost.localdomain
Add checks for programs which are required for the test suite to run....
r1279 missing=''
for pre in $prereqs ; do
if type $pre > /dev/null 2>&1 ; then
: prereq exists
Thomas Arendsen Hein
Cleanup of tabs and trailing spaces.
r1308 else
eric@localhost.localdomain
Add checks for programs which are required for the test suite to run....
r1279 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
Thomas Arendsen Hein
Incorporated most of Aron Griffis suggestions for sh compatibility.
r804 TESTS="$*"
Thomas Arendsen Hein
Make tests work on Solaris:...
r798 if [ -z "$TESTS" ] ; then
Thomas Arendsen Hein
Incorporated most of Aron Griffis suggestions for sh compatibility.
r804 TESTS=`ls test-* | grep -v "[.~]"`
mpm@selenic.com
run-tests: run tests given on the command line...
r362 fi
for f in $TESTS ; do
TK Soh
tests: fix portability issue for echo -n
r1952 $ECHO_N ".${NNL}"
Thomas Arendsen Hein
Incorporated most of Aron Griffis suggestions for sh compatibility.
r804 run_one $f || failed=`expr $failed + 1`
tests=`expr $tests + 1`
mpm@selenic.com
Add a simple testing framework...
r331 done
echo
Thomas Arendsen Hein
Incorporated most of Aron Griffis suggestions for sh compatibility.
r804 echo "Ran $tests tests, $failed failed."
mpm@selenic.com
Add a simple testing framework...
r331
Vadim Gelfer
let run-tests run optional code coverage tests....
r2068 if [ -n "$TEST_COVERAGE" ]; then
unset PYTHONPATH
$ECHO_N "$BINDIR,$TESTDIR,$HGTMP/test-," > "$HGTMP/omit"
if [ -z "$COVERAGE_STDLIB" ]; then
"${PYTHON-python}" -c 'import sys; print ",".join(sys.path)' \
>> "$HGTMP/omit"
fi
cd "$PYTHONDIR"
"${PYTHON-python}" "$TESTDIR/coverage.py" -r --omit="`cat \"$HGTMP/omit\"`"
fi
mpm@selenic.com
Add a simple testing framework...
r331 if [ $failed -gt 0 ] ; then
Thomas Arendsen Hein
Cleaned up trap handling in run-tests, too.
r835 exit 1
mpm@selenic.com
Add a simple testing framework...
r331 fi
Thomas Arendsen Hein
Cleaned up trap handling in run-tests, too.
r835 exit 0