comparison tests/run-tests @ 808:8f5637f0a0c0

Merge with TAH
author mpm@selenic.com
date Sat, 30 Jul 2005 08:35:29 -0800
parents f199e1887889 19388dcbac49
children 0902ffece4b4
comparison
equal deleted inserted replaced
788:64d2a558c943 808:8f5637f0a0c0
1 #!/bin/sh -e 1 #!/bin/sh -e
2 2
3 export LANG=C 3 LANG="C"; export LANG
4 export LC_CTYPE="C" 4 LC_CTYPE="C"; export LC_CTYPE
5 export LC_NUMERIC="C" 5 LC_NUMERIC="C"; export LC_NUMERIC
6 export LC_TIME="C" 6 LC_TIME="C"; export LC_TIME
7 export LC_COLLATE="C" 7 LC_COLLATE="C"; export LC_COLLATE
8 export LC_MONETARY="C" 8 LC_MONETARY="C"; export LC_MONETARY
9 export LC_MESSAGES="C" 9 LC_MESSAGES="C"; export LC_MESSAGES
10 export LC_PAPER="C" 10 LC_PAPER="C"; export LC_PAPER
11 export LC_NAME="C" 11 LC_NAME="C"; export LC_NAME
12 export LC_ADDRESS="C" 12 LC_ADDRESS="C"; export LC_ADDRESS
13 export LC_TELEPHONE="C" 13 LC_TELEPHONE="C"; export LC_TELEPHONE
14 export LC_MEASUREMENT="C" 14 LC_MEASUREMENT="C"; export LC_MEASUREMENT
15 export LC_IDENTIFICATION="C" 15 LC_IDENTIFICATION="C"; export LC_IDENTIFICATION
16 export LC_ALL="" 16 LC_ALL=""; export LC_ALL
17 export HGEDITOR=true 17 TZ=GMT; export TZ
18 export HGMERGE=true 18 HGEDITOR=true; export HGEDITOR
19 export HGUSER=test 19 HGMERGE=true; export HGMERGE
20 HGUSER="test"; export HGUSER
20 21
21 umask 022 22 umask 022
22 23
23 tests=0 24 tests=0
24 failed=0 25 failed=0
25 H=$PWD 26
27 HGTMP=""
28 cleanup_exit() {
29 rm -rf "$HGTMP"
30 exit $1
31 }
32
33 # Remove temporary files even if we get interrupted
34 trap "cleanup_exit 255" TERM KILL INT QUIT ABRT
35
36 HGTMP="${TMPDIR-/tmp}/hgtests.$RANDOM.$RANDOM.$RANDOM.$$"
37 (umask 077 && mkdir "$HGTMP") || {
38 echo "Could not create temporary directory! Exiting." 1>&2
39 exit 1
40 }
41
42 TESTDIR="$PWD"
26 43
27 if [ -d /usr/lib64 ]; then 44 if [ -d /usr/lib64 ]; then
28 lib=lib64 45 lib=lib64
29 else 46 else
30 lib=lib 47 lib=lib
31 fi 48 fi
32 49
33 TESTPATH=$PWD/install/bin 50 INST="$HGTMP/install"
34 export PATH=$TESTPATH:$PATH 51 cd ..
35 export PYTHONPATH=$PWD/install/$lib/python 52 if ${PYTHON-python} setup.py install --home="$INST" > tests/install.err 2>&1
53 then
54 rm tests/install.err
55 mv "$INST/bin/hg" "$INST/bin/hg.real"
56 (
57 echo '#!/bin/sh'
58 echo 'echo "+ hg $@"'
59 echo 'exec hg.real "$@"'
60 ) > "$INST/bin/hg"
61 chmod 755 "$INST/bin/hg"
62 else
63 cat tests/install.err
64 cleanup_exit 1
65 fi
66 cd "$TESTDIR"
36 67
37 rm -rf install 68 PATH="$INST/bin:$PATH"; export PATH
38 cd .. 69 PYTHONPATH="$INST/$lib/python"; export PYTHONPATH
39 ${PYTHON:-python} setup.py install --home=tests/install > tests/install.err
40 if [ $? != 0 ] ; then
41 cat tests/install.err
42 fi
43 cd $H
44 rm install.err
45 70
46 function run_one
47 {
48 rm -f $1.err
49 export TZ=GMT
50 D=`mktemp -d ${TMP-/tmp}/tmp.XXXXXX`
51 if [ "$D" = "" ] ; then
52 echo mktemp failed!
53 fi
54 71
55 cd $D 72 run_one() {
73 rm -f "$1.err"
74
75 mkdir "$HGTMP/$1"
76 cd "$HGTMP/$1"
56 fail=0 77 fail=0
57 export HOME=$D 78 HOME="$HGTMP/$1"; export HOME
79 OUT="$HGTMP/$1.out"
80 OUTOK="$TESTDIR/$1.out"
81 ERR="$TESTDIR/$1.err"
58 82
59 if ! $H/$1 > .out 2>&1 ; then 83 if "$TESTDIR/$1" > "$OUT" 2>&1; then
60 echo $1 failed with error code $? 84 : no error
85 else
86 echo "$1 failed with error code $?"
61 fail=1 87 fail=1
62 fi 88 fi
63 89
64 if [ -s .out -a ! -r $H/$1.out ] ; then 90 if [ -s "$OUT" -a ! -s "$OUTOK" ] ; then
65 echo $1 generated unexpected output: 91 cp "$OUT" "$ERR"
66 cat .out 92 echo
67 cp .out $H/$1.err 93 echo "$1 generated unexpected output:"
94 cat "$ERR"
68 fail=1 95 fail=1
69 elif [ -r $H/$1.out ] && ! diff -u $H/$1.out .out > /dev/null ; then 96 elif [ -r "$OUTOK" ]; then
70 echo $1 output changed: 97 if diff -u "$OUTOK" "$OUT" > /dev/null; then
71 diff -u $H/$1.out .out && true 98 : no differences
72 cp .out $H/$1.err 99 else
73 fail=1 100 if FIXME="`grep 'FIXME' \"$TESTDIR/$1\"`"; then
101 echo
102 echo "$1 failed, but this is ignored because of:"
103 echo "$FIXME"
104 else
105 cp "$OUT" "$ERR"
106 echo
107 echo "$1 output changed:"
108 diff -u "$OUTOK" "$ERR" || true
109 fail=1
110 fi
111 fi
74 fi 112 fi
75 113
76 cd $H 114 cd "$TESTDIR"
77 rm -r $D 115 rm -f "$HGTMP/$1.out"
116 rm -rf "$HGTMP/$1"
78 return $fail 117 return $fail
79 } 118 }
80 119
81 TESTS=$@ 120 TESTS="$*"
82 if [ "$TESTS" = "" ] ; then 121 if [ -z "$TESTS" ] ; then
83 TESTS=`ls test-* | grep -Ev "\.|~"` 122 TESTS=`ls test-* | grep -v "[.~]"`
84 fi 123 fi
85 124
86 for f in $TESTS ; do 125 for f in $TESTS ; do
87 echo -n "." 126 echo -n "."
88 if ! run_one $f ; then 127 run_one $f || failed=`expr $failed + 1`
89 failed=$[$failed + 1] 128 tests=`expr $tests + 1`
90 fi
91 tests=$[$tests + 1]
92 done 129 done
93 130
94 rm -rf install
95
96 echo 131 echo
97 echo Ran $tests tests, $failed failed 132 echo "Ran $tests tests, $failed failed."
98 133
99 if [ $failed -gt 0 ] ; then 134 if [ $failed -gt 0 ] ; then
100 exit 1 135 cleanup_exit 1
101 fi 136 fi
102 137 cleanup_exit 0