|
Packit |
dd8086 |
# Copyright (C) 2003, 2004, 2005, 2006, 2008, 2012
|
|
Packit |
dd8086 |
# Rocky Bernstein <rocky@gnu.org>
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# This program is free software: you can redistribute it and/or modify
|
|
Packit |
dd8086 |
# it under the terms of the GNU General Public License as published by
|
|
Packit |
dd8086 |
# the Free Software Foundation, either version 3 of the License, or
|
|
Packit |
dd8086 |
# (at your option) any later version.
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# This program is distributed in the hope that it will be useful,
|
|
Packit |
dd8086 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
dd8086 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
dd8086 |
# GNU General Public License for more details.
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# You should have received a copy of the GNU General Public License
|
|
Packit |
dd8086 |
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
dd8086 |
#
|
|
Packit |
dd8086 |
# Common routines and setup for regression testing.
|
|
Packit |
dd8086 |
SKIP_TEST_EXITCODE=77
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# Some output changes depending on TZ and locale. Set this so we get known
|
|
Packit |
dd8086 |
# results
|
|
Packit |
dd8086 |
TZ=CUT
|
|
Packit |
dd8086 |
# both 'en_US' and 'en_US.utf8' might be defined on some platforms
|
|
Packit |
dd8086 |
if locale -a >/dev/null 2>&1 ; then
|
|
Packit |
dd8086 |
# Note: Solaris 10's shell can't handle $(..) so we use `...`
|
|
Packit |
dd8086 |
LC_TIME=`locale -a | grep 'en_US' | grep -v 'utf8' | grep -v 'iso88591' &2>/dev/null`
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
[ -z "$LC_TIME" ] && {
|
|
Packit |
dd8086 |
LC_TIME=${LC_TIME:-en_US}
|
|
Packit |
dd8086 |
}>/dev/null 2>&1
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
export TZ LC_TIME
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
DIFF="/usr/bin/diff"
|
|
Packit |
dd8086 |
DIFF_OPTS=" -w --unified"
|
|
Packit |
dd8086 |
RM="rm -f"
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
check_result() {
|
|
Packit |
dd8086 |
RC=$1
|
|
Packit |
dd8086 |
shift
|
|
Packit |
dd8086 |
msg=$1
|
|
Packit |
dd8086 |
shift
|
|
Packit |
dd8086 |
cmdline="$cmd $*"
|
|
Packit |
dd8086 |
if test $RC -ne 0 ; then
|
|
Packit |
dd8086 |
if test $RC -ne $SKIP_TEST_EXITCODE ; then
|
|
Packit |
dd8086 |
echo "$0: $msg failed."
|
|
Packit |
dd8086 |
if test -n "$cmdline" ; then
|
|
Packit |
dd8086 |
echo "$0: failed command:"
|
|
Packit |
dd8086 |
echo " $cmdline"
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
exit $RC
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
echo "-- $0: $msg skipped."
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
echo "-- $0: $msg ok."
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
test_common() {
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
cmdname="$1"
|
|
Packit |
dd8086 |
cmd="../src/${cmdname}"
|
|
Packit |
dd8086 |
opts="$2"
|
|
Packit |
dd8086 |
outfile="$3"
|
|
Packit |
dd8086 |
rightfile="$4"
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
if [ ! -x "${cmd}" ]; then
|
|
Packit |
dd8086 |
echo "-- $0: No ${cmd}"
|
|
Packit |
dd8086 |
return 1
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
cmdline="${cmd}"
|
|
Packit |
dd8086 |
if "${cmd}" --no-header ${opts} >"${outfile}" 2>&1 ; then
|
|
Packit |
dd8086 |
if test "/usr/bin/diff" != no; then
|
|
Packit |
dd8086 |
if /usr/bin/diff -w --unified "${outfile}" "${rightfile}" ; then
|
|
Packit |
dd8086 |
rm -f "${outfile}"
|
|
Packit |
dd8086 |
return 0
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
return 3
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
echo "$0: No diff(1) or cmp(1) found - cannot test ${cmdname}"
|
|
Packit |
dd8086 |
rm -f "${outfile}"
|
|
Packit |
dd8086 |
return $SKIP_TEST_EXITCODE
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
echo "$0 failed running: ${cmdname} ${opts}"
|
|
Packit |
dd8086 |
return 2
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
test_cdinfo() {
|
|
Packit |
dd8086 |
test_common cd-info "$@"
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
test_iso_info() {
|
|
Packit |
dd8086 |
test_common iso-info "$@"
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
test_cd_read() {
|
|
Packit |
dd8086 |
test_common cd-read "$@"
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
test_iso_read() {
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
# not test_common, as we use an output file not stdout.
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
opts="$1"
|
|
Packit |
dd8086 |
outfile="$2"
|
|
Packit |
dd8086 |
rightfile="$3"
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
ISO_READ="../src/iso-read"
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
if [ ! -x ${ISO_READ} ]; then
|
|
Packit |
dd8086 |
echo "-- $0: No ${ISO_READ}"
|
|
Packit |
dd8086 |
return 1
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
if "${ISO_READ}" ${opts} -o "${outfile}" 2>&1 ; then
|
|
Packit |
dd8086 |
if test "/usr/bin/diff" != no; then
|
|
Packit |
dd8086 |
if /usr/bin/diff -w --unified "${outfile}" "${rightfile}" ; then
|
|
Packit |
dd8086 |
rm -f "${outfile}"
|
|
Packit |
dd8086 |
return 0
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
return 3
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
echo "$0: No diff(1) or cmp(1) found - cannot test ${ISO_READ}"
|
|
Packit |
dd8086 |
rm -f "${outfile}"
|
|
Packit |
dd8086 |
return 77
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
else
|
|
Packit |
dd8086 |
echo "$0 failed running: ${ISO_READ} ${opts} -o ${outfile}"
|
|
Packit |
dd8086 |
return 2
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
test_legal_header() {
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
cmdname="$1"
|
|
Packit |
dd8086 |
cmd="../src/${cmdname}"
|
|
Packit |
dd8086 |
opts="$2"
|
|
Packit |
dd8086 |
outfile="$3"
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
if test "/bin/grep" = no; then
|
|
Packit |
dd8086 |
echo "$0: No grep(1) found - cannot test ${cmd}."
|
|
Packit |
dd8086 |
echo "$0: Legal header test skipped."
|
|
Packit |
dd8086 |
exit $SKIP_TEST_EXITCODE
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
"${cmd}" ${opts} > ${outfile} 2>&1
|
|
Packit |
dd8086 |
while read line; do
|
|
Packit |
dd8086 |
/bin/grep "${line}" ${outfile} >/dev/null 2>&1
|
|
Packit |
dd8086 |
if [ "$?" -ne 0 ] ; then
|
|
Packit |
dd8086 |
echo "$0: Legal header test failed due to missing expected line:"
|
|
Packit |
dd8086 |
echo " ${line}"
|
|
Packit |
dd8086 |
echo "$0: Failed command:"
|
|
Packit |
dd8086 |
echo " ${cmd} ${opts}"
|
|
Packit |
dd8086 |
exit 4
|
|
Packit |
dd8086 |
fi
|
|
Packit |
dd8086 |
done < ${srcdir}/check_legal.regex
|
|
Packit |
dd8086 |
rm -f ${outfile}
|
|
Packit |
dd8086 |
echo "-- $0: Legal header of ${cmd} ${opts} ok."
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
}
|
|
Packit |
dd8086 |
|
|
Packit |
dd8086 |
#;;; Local Variables: ***
|
|
Packit |
dd8086 |
#;;; mode:shell-script ***
|
|
Packit |
dd8086 |
#;;; eval: (sh-set-shell "bash") ***
|
|
Packit |
dd8086 |
#;;; End: ***
|