Mercurial > hg > mercurial-crew-with-dirclash
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 |