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