Mercurial > hg > mercurial-crew-with-dirclash
view tests/run-tests @ 2192:2be3ac7abc21
add bugzilla integration hook. example of writing hook in python.
hook updates bugzilla bugs when it sees commit comments that mention
bug id, such as "i fixed bug 77".
only bugzilla 2.16 supported yet, but easy to extend. bugzilla versions
have different schema, i have not used later than 2.16.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Wed, 03 May 2006 14:40:39 -0700 |
parents | a56fc34d6e23 |
children |
line wrap: on
line source
#!/bin/sh -e # # 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 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 OS=`uname` case "$OS" in HP-UX|SunOS) DIFFOPTS= ;; *) DIFFOPTS=-u ;; esac 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 clean --all install --force --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"; 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 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 $DIFFOPTS "$OUTOK" "$OUT" > /dev/null; then : no differences else cp "$OUT" "$ERR" echo echo "$1 output changed:" diff $DIFFOPTS "$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 [ -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 if [ $failed -gt 0 ] ; then exit 1 fi exit 0