##// END OF EJS Templates
Add checks for programs which are required for the test suite to run....
eric@localhost.localdomain -
r1279:8ab1c07d default
parent child Browse files
Show More
@@ -1,124 +1,145 b''
1 1 #!/bin/sh -e
2 2
3 3 LANG="C"; export LANG
4 4 LC_CTYPE="C"; export LC_CTYPE
5 5 LC_NUMERIC="C"; export LC_NUMERIC
6 6 LC_TIME="C"; export LC_TIME
7 7 LC_COLLATE="C"; export LC_COLLATE
8 8 LC_MONETARY="C"; export LC_MONETARY
9 9 LC_MESSAGES="C"; export LC_MESSAGES
10 10 LC_PAPER="C"; export LC_PAPER
11 11 LC_NAME="C"; export LC_NAME
12 12 LC_ADDRESS="C"; export LC_ADDRESS
13 13 LC_TELEPHONE="C"; export LC_TELEPHONE
14 14 LC_MEASUREMENT="C"; export LC_MEASUREMENT
15 15 LC_IDENTIFICATION="C"; export LC_IDENTIFICATION
16 16 LC_ALL=""; export LC_ALL
17 17 TZ=GMT; export TZ
18 18 HGEDITOR=true; export HGEDITOR
19 19 HGMERGE=true; export HGMERGE
20 20 HGUSER="test"; export HGUSER
21 21
22 22 umask 022
23 23
24 24 tests=0
25 25 failed=0
26 26
27 27 HGTMP=""
28 28 cleanup_exit() {
29 29 rm -rf "$HGTMP"
30 30 }
31 31
32 32 # Remove temporary files even if we get interrupted
33 33 trap "cleanup_exit" 0 # normal exit
34 34 trap "exit 255" 1 2 3 6 15 # HUP INT QUIT ABRT TERM
35 35
36 36 HGTMP="${TMPDIR-/tmp}/hgtests.$RANDOM.$RANDOM.$RANDOM.$$"
37 37 (umask 077 && mkdir "$HGTMP") || {
38 38 echo "Could not create temporary directory! Exiting." 1>&2
39 39 exit 1
40 40 }
41 41
42 42 TESTDIR="$PWD"
43 43
44 44 if [ -d /usr/lib64 ]; then
45 45 lib=lib64
46 46 else
47 47 lib=lib
48 48 fi
49 49
50 50 INST="$HGTMP/install"
51 51 cd ..
52 52 if ${PYTHON-python} setup.py install --home="$INST" > tests/install.err 2>&1
53 53 then
54 54 rm tests/install.err
55 55 else
56 56 cat tests/install.err
57 57 exit 1
58 58 fi
59 59 cd "$TESTDIR"
60 60
61 61 PATH="$INST/bin:$PATH"; export PATH
62 62 PYTHONPATH="$INST/$lib/python"; export PYTHONPATH
63 63
64 64
65 65 run_one() {
66 66 rm -f "$1.err"
67 67
68 68 mkdir "$HGTMP/$1"
69 69 cd "$HGTMP/$1"
70 70 fail=0
71 71 HOME="$HGTMP/$1"; export HOME
72 72 OUT="$HGTMP/$1.out"
73 73 OUTOK="$TESTDIR/$1.out"
74 74 ERR="$TESTDIR/$1.err"
75 75
76 76 if "$TESTDIR/$1" > "$OUT" 2>&1; then
77 77 : no error
78 78 else
79 79 echo "$1 failed with error code $?"
80 80 fail=1
81 81 fi
82 82
83 83 if [ -s "$OUT" -a ! -s "$OUTOK" ] ; then
84 84 cp "$OUT" "$ERR"
85 85 echo
86 86 echo "$1 generated unexpected output:"
87 87 cat "$ERR"
88 88 fail=1
89 89 elif [ -r "$OUTOK" ]; then
90 90 if diff -u "$OUTOK" "$OUT" > /dev/null; then
91 91 : no differences
92 92 else
93 93 cp "$OUT" "$ERR"
94 94 echo
95 95 echo "$1 output changed:"
96 96 diff -u "$OUTOK" "$ERR" || true
97 97 fail=1
98 98 fi
99 99 fi
100 100
101 101 cd "$TESTDIR"
102 102 rm -f "$HGTMP/$1.out"
103 103 rm -rf "$HGTMP/$1"
104 104 return $fail
105 105 }
106 106
107 # list of prerequisite programs
108 # stuff from coreutils (cat, rm, etc) are not tested
109 prereqs="python merge diff grep unzip md5sum gunzip sed"
110 missing=''
111 for pre in $prereqs ; do
112 if type $pre > /dev/null 2>&1 ; then
113 : prereq exists
114 else
115 missing="$pre $missing"
116 fi
117 done
118
119 if [ "$missing" != '' ] ; then
120 echo "ERROR: the test suite needs some programs to execute correctly."
121 echo "The following programs are missing: "
122 for pre in $missing; do
123 echo " $pre"
124 done
125 exit 1
126 fi
127
107 128 TESTS="$*"
108 129 if [ -z "$TESTS" ] ; then
109 130 TESTS=`ls test-* | grep -v "[.~]"`
110 131 fi
111 132
112 133 for f in $TESTS ; do
113 134 echo -n "."
114 135 run_one $f || failed=`expr $failed + 1`
115 136 tests=`expr $tests + 1`
116 137 done
117 138
118 139 echo
119 140 echo "Ran $tests tests, $failed failed."
120 141
121 142 if [ $failed -gt 0 ] ; then
122 143 exit 1
123 144 fi
124 145 exit 0
General Comments 0
You need to be logged in to leave comments. Login now