@@ -26,22 +26,24 @@ top_builddir=${top_builddir}/tests
26
26
progname=` echo " $0 " | sed ' s,^.*/,,' `
27
27
testname=` echo " $progname " | sed ' s,-.*$,,' `
28
28
testsubdir=${testsubdir-testSubDir}
29
+ testsubdir=${testsubdir} /${progname}
29
30
30
31
# User can set VERBOSE to cause output redirection
31
32
case " $VERBOSE " in
32
33
[Nn]|[Nn][Oo]|0|" " )
33
34
VERBOSE=0
34
- exec > /dev/null 2>&1
35
+ exec > /dev/null
35
36
;;
36
37
[Yy]|[Yy][Ee][Ss])
37
38
VERBOSE=1
38
39
;;
39
40
esac
40
41
41
- rm -rf " $testsubdir /$progname " > /dev/null 2>&1
42
- mkdir -p " $testsubdir /$progname "
43
- cd " $testsubdir /$progname " \
44
- || { echo " Cannot make or change into $testsubdir /$progname " ; exit 1; }
42
+ rm -rf " $testsubdir " > /dev/null 2>&1
43
+ mkdir -p " $testsubdir "
44
+ CURDIR=$( pwd)
45
+ cd " $testsubdir " \
46
+ || { echo " Cannot make or change into $testsubdir " ; exit 1; }
45
47
46
48
echo " === Running test $progname "
47
49
68
70
#
69
71
run_output_test ()
70
72
{
73
+ if [ " $1 " = " -o" ] ; then
74
+ TEST_OUTPUT=" $2 "
75
+ shift
76
+ shift
77
+ fi
71
78
TEST_COMMAND=" $1 "
79
+ shift
80
+ if [ -z " ${TEST_OUTPUT} " ] ; then
81
+ TEST_OUTPUT=${TEST_COMMAND}
82
+ fi
72
83
73
- REDIR_OUTPUT=" > \" ${TEST_COMMAND } .out\" "
84
+ REDIR_OUTPUT=" > \" ${TEST_OUTPUT } .out\" "
74
85
if [ $VERBOSE -gt 1 ] ; then
75
- REDIR_OUTPUT=" | tee \" ${TEST_COMMAND } .out\" "
86
+ REDIR_OUTPUT=" | tee \" ${TEST_OUTPUT } .out\" "
76
87
fi
77
88
78
89
if [ $use_valgrind -eq 1 ] ; then
79
90
eval valgrind --tool=memcheck \
80
91
--trace-children=yes \
81
92
--demangle=yes \
82
- --log-file=vg.out \
93
+ --log-file=" ${TEST_OUTPUT} . vg.out" \
83
94
--leak-check=full \
84
95
--show-reachable=yes \
85
96
--run-libc-freeres=yes \
86
- " \" ${top_builddir} /${TEST_COMMAND} \" " ${REDIR_OUTPUT}
97
+ " \" ${top_builddir} /${TEST_COMMAND} \" " \"\$ @ \" ${REDIR_OUTPUT}
87
98
err=$?
88
99
89
100
else
90
- eval " \" ${top_builddir} /${TEST_COMMAND} " \" ${REDIR_OUTPUT}
101
+ eval " \" ${top_builddir} /${TEST_COMMAND} " \" \"\$ @ \" ${REDIR_OUTPUT}
91
102
err=$?
92
103
fi
93
104
94
105
if [ $err -ne 0 ] ; then
95
- echo " ERROR: ${TEST_COMMAND} exited with non-zero exit status: $err " 1>&2
106
+ echo " ERROR: \" ${TEST_COMMAND} $@ \" exited with non-zero exit status: $err " 1>&2
96
107
fi
97
108
98
109
if [ $use_valgrind -eq 1 ] ; then
99
- if ! tail -1 " vg.out" | grep -q " ERROR SUMMARY: 0 errors" ; then
110
+ if ! tail -1 " ${TEST_OUTPUT} . vg.out" | grep -q " ERROR SUMMARY: 0 errors" ; then
100
111
echo " ERROR: valgrind found errors during execution:" 1>&2
101
- cat vg.out
112
+ cat " ${TEST_OUTPUT} . vg.out"
102
113
err=1
103
114
fi
104
115
fi
105
116
106
- if ! " $CMP " -s " ${top_builddir} /${TEST_COMMAND} .expected" " ${TEST_COMMAND} .out" ; then
107
- echo " ERROR: ${TEST_COMMAND} failed:" 1>&2
108
- diff " ${top_builddir} /${TEST_COMMAND} .expected" " ${TEST_COMMAND} .out" 1>&2
117
+ if ! " $CMP " -s " ${top_builddir} /${TEST_OUTPUT} .expected" " ${TEST_OUTPUT} .out" ; then
118
+ echo " ERROR: \" ${TEST_COMMAND} $@ \" (${TEST_OUTPUT} ) failed (set VERBOSE=1 to see full output):" 1>&2
119
+ (cd " ${CURDIR} " ; set -x ; diff " ${top_builddir} /${TEST_OUTPUT} .expected" " $testsubdir /${TEST_OUTPUT} .out" )
120
+ echo " cp \" $testsubdir /${TEST_OUTPUT} .out\" \" ${top_builddir} /${TEST_OUTPUT} .expected\" " 1>&2
121
+
109
122
err=1
110
123
fi
111
124
0 commit comments