Blame test/check_common_fn

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: ***