diff options
Diffstat (limited to 'autoopts/test/defs.in')
-rw-r--r-- | autoopts/test/defs.in | 351 |
1 files changed, 351 insertions, 0 deletions
diff --git a/autoopts/test/defs.in b/autoopts/test/defs.in new file mode 100644 index 0000000..d7669ab --- /dev/null +++ b/autoopts/test/defs.in @@ -0,0 +1,351 @@ +#! /bin/echo this_file_should_be_sourced,_not_executed +# -*- Mode: Shell-script -*- +# +# defs --- define the environment for autogen tests. +# +# Time-stamp: "2012-05-13 16:02:07 bkorb" +# Author: Bruce Korb <bkorb@gnu.org> +## +## This file is part of AutoOpts, a companion to AutoGen. +## AutoOpts is free software. +## AutoOpts is Copyright (c) 1992-2012 by Bruce Korb - all rights reserved +## +## AutoOpts is available under any one of two licenses. The license +## in use must be one of these two and the choice is under the control +## of the user of the license. +## +## The GNU Lesser General Public License, version 3 or later +## See the files "COPYING.lgplv3" and "COPYING.gplv3" +## +## The Modified Berkeley Software Distribution License +## See the file "COPYING.mbsd" +## +## These files have the following md5sums: +## +## 43b91e8ca915626ed3818ffb1b71248b pkg/libopts/COPYING.gplv3 +## 06a1a2e4760c90ea5e1dad8dfaac4d39 pkg/libopts/COPYING.lgplv3 +## 66a5cedaf62c4b2637025f049f9b826f pkg/libopts/COPYING.mbsd + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# +# C O N F I G U R E D V A L U E S +# +# Make sure srcdir is an absolute path. Supply the variable +# if it does not exist. We want to be able to run the tests +# stand-alone!! +# +cfg_vals() +{ + case `uname -s` in + SunOS ) + if test "X$BASH_VERSION" = X + then + # On Solaris, make certain we do not use /bin/sh + sh=`which bash` + test "X$sh" = X && sh=/usr/xpg4/bin/sh + BASH_VERSION=not-good-enough + export BASH_VERSION + exec $sh "$0" "$@" + fi + ;; + esac + + script_name=$1 + set -a + . ${top_builddir}/config/shdefs + progname=`echo "$script_name" | ${SED} 's,^.*/,,'` + testname=`echo "$progname" | ${SED} 's,\..*$,,'` + test_name=`echo ${testname} | ${SED} 's/-/_/g'` + PS4=">${testname}-\${FUNCNAME}> " + test -z "$srcdir" && exit 1 + srcdir=`cd $srcdir >/dev/null && pwd` + ( exec 2>/dev/null; ulimit -c unlimited ) && \ + ulimit -c unlimited + + test -z "${CFLAGS}" && CFLAGS='@CFLAGS@' + CFLAGS="${CFLAGS} @DEFS@" + test -z "${testsubdir}" && testsubdir=testdir + test -z "${PAGER}" && PAGER=more + nl=' +' ht=' ' + + stdopts=${top_srcdir}/autoopts/test/stdopts.def + test_main=yes + use_flags=true + sed_omit_license="/-\*- buffer-read-only:/,/^ \*\//d" + TERM='' + set +a + + ( + test_local() { + local local_works=yes + } + test_local + ) || eval 'local() { : ; }' + + vars=`set | ${SED} -n '/^\(LANG\|LC_[A-Z_]*\)=/s/=.*//p'` 2>/dev/null + test "X$vars" = X || unset $vars +} + +# If only the "rm(1)" command could be relied upon.... +# +purge() +{ + rm -rf ${*} 2>/dev/null + bad='' + for f + do test -f ${f} -o -d ${f} && bad="${bad} ${f}" + done + test -z "$bad" && return 0 + + set -- $bad + test "x${RANDOM}" = "x${RANDOM}" && RANDOM=`expr 0${RANDOM} + 1 2>/dev/null` + + f=ZZPURGE-${1}-${RANDOM}-$$ + if test $# -gt 1 + then mkdir ${f} + mv $* ${f}/. + else mv $1 ${f} + fi +} + +init_tests() +{ + logfile=`pwd`/testdir/${testname}.log + exec 8>&2 1>${logfile} 2>&1 + + TMPDIR=`pwd`/testdir/${testname}-tmpd + mkdir ${TMPDIR} + + f=`\cd ${LIBGUILE_PATH}/../bin && pwd` + PATH=${f}:${PATH} + echo PATH is ${PATH} >&2 + + builddir=`pwd` + testsubdir=testdir + CFLAGS=`echo ${CFLAGS} | \ + ${SED} "s/-Werror[^ ${ht}]*//g;s/-Wextra//g"` + + lo_dir=${top_builddir}/autoopts + test -d ${lo_dir}/.libs && lo_dir=${lo_dir}/.libs + test "X${LD_LIBRARY_PATH}" = X || LD_LIBRARY_PATH=:${LD_LIBRARY_PATH} + LD_LIBRARY_PATH=${lo_dir}:${LIBGUILE_PATH}${LD_LIBRARY_PATH} + + case ${AG_VERSION} in + *pre* ) GUILE_WARN_DEPRECATED=detailed ;; + * ) GUILE_WARN_DEPRECATED=no ;; + esac + + case "$LIB" in + *-lgen* ) : ;; + * ) + for f in /usr/lib*/libgen.so /lib*/libgen.so + do + test -f $f && { + LIB="${LIB} -lgen" + break + } + done + ;; + esac + lo_lib=`find ${lo_dir} -type f -name libopts*.${OBJEXT}` + LIB="${lo_lib} ${LIB}" + + AG_L=run_ag\ ao + agl_opts="-L${top_builddir}/autoopts/tpl -L${top_srcdir}/autoopts/tpl" + + export TMPDIR PATH LD_LIBRARY_PATH \ + GUILE_WARN_DEPRECATED LIB AG_L agl_opts \ + CC LIBGUILE AG_VERSION +} + +be_silent() +{ + setx=: + VERBOSE=false + purge testdir + + # Sometimes, MSDos FS cannot even rename the directory!! + # + if test -d testdir + then purge testdir/* testdir/.??* + else msg=echo + mkdir testdir || exit 1 + fi + + run_ag() + { + local opts='' + shift + + case " $* " in + *' -L'* ) : ;; + * ) opts="${agl_opts}" ;; + esac + + ${AGexe} ${opts} "$@" + } + + init_tests +} + +be_verbose() +{ + set -x + setx='set -x' + msg=: + VERBOSE=true + test -d testdir || mkdir testdir || exit 1 + + run_ag() + { + local tfile=${testname}-aglog-${1}-$$.log + shift + local opts='' + local tr="--trace=every --trace-out=>>${tfile}" + + case " $* " in + *' -L'* ) : ;; + * ) opts="${agl_opts}" ;; + esac + + MALLOC_CHECK_=2 \ + ${AGexe} ${opts} ${tr} "$@" + } + + init_tests +} + +cfg_inc() +{ + cd testdir || { + echo "Cannot make or change into testdir" >&8 + exit 1 + } + testsubdir=`pwd` + + dirs=` + for f in ${top_builddir} ${top_srcdir} + do + for d in . autoopts agen5 + do + cd $f/$d + pwd >&9 + cd - + done 9>&1 1>/dev/null + done | sort -u | ${SED} 's/^/-I/'` + + INC=`echo ${dirs} ${CPPFLAGS}` + + : "=== Running $progname for ${testname} using ${SHELL} ===" + chmod +w * > /dev/null 2>&1 || : + ${VERBOSE} && SHELLX="${SHELL} -x" || SHELLX="${SHELL}" +} + +clean_help() { + test -z "$sedcmd" && s= || s="${sedcmd}${nl}" + s="${s}/^Packaged by/d${nl}" + s="${s}/^Report .* bugs to/d${nl}" + s="${s}/[Pp]lease send bug reports/d${nl}" + s="${s}/^[ ${ht}]*\$/d" + + ${SED} "${s}" +} + +compile() +{ + ${setx} + test "X${Csrc}" = "X" && Csrc="${testname}" + test "X${Cexe}" = "X" && Cexe="${Csrc}" + test "X${Dnam}" = "X" && Dnam="${testname}" + + d=`echo TEST_TEST_${Dnam}_OPTS | /usr/bin/tr '[a-z]-' '[A-Z]_'` + cc_cmd="${CC} ${CFLAGS} -D$d ${INC} -o ${Cexe} ${Csrc}.c ${LIB}" + eval ${cc_cmd} || \ + failure cannot compile ${Csrc}.c + if test $# -gt 0 + then + ./${Cexe} ${*} ${dosed} || \ + failure cannot obtain help output for ${Csrc} + fi | clean_help > ${Csrc}.help + Csrc='' Cexe='' Dnam='' +} + +cleanup() +{ + trap '' 15 + ${setx} + ${VERBOSE} || { + cd ${builddir} + purge testdir + test -d testdir && mv testdir ZZJUNK-$$ + } + ${msg} ${testname} done +} + +# A standard failure function +# +failure() +{ + trap '' 15 + ${setx} + cd ${testsubdir} + if test -d ../FAILURES + then ( \cd ../FAILURES ; purge -rf ${testname}* .*${testname}* ) + else mkdir ../FAILURES ; fi + + exec > /dev/tty 2>&8 + cat ${logfile} >&2 + + { + mv -f ${testname}* .*${testname}* ../FAILURES || : + } 2>/dev/null + for f in core* + do test -f ${f} && mv -f ${f} ../FAILURES/${testname}-${f} ; done + + echo FAILURE: "$*" >&8 + exit 1 +} + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +cfg_vals $0 + +case "${VERBOSE}" in +'' | [Nn]* | 0 | [Ff]* ) + be_silent ;; + +[Yy]* | [0-9] | [Tt]* ) + be_verbose ;; + +* ) + case "$-" in + *x* ) be_verbose ;; + * ) be_silent ;; + esac +esac + +cfg_inc + +trap "failure 'test ${testname} killed on timeout'" 15 +( ( exec > /dev/null 2>&1 </dev/null + test -z "${kill_delay}" && kill_delay=3 + kill_delay=`expr $kill_delay '*' $AG_TIMEOUT` + sleep ${kill_delay} + ps -p $$ || exit + kill -15 $$ + sleep 1 + ps -p $$ || exit + mv -f `dirname $logfile` ${builddir}/FAILED-${testname} + kill -9 $$ +) & +) + +## Local Variables: +## mode: shell-script +## indent-tabs-mode: nil +## sh-indentation: 2 +## sh-basic-offset: 2 +## End: + +# defs.in ends here |