X-Git-Url: http://git.draconx.ca/gitweb/liblbx.git/blobdiff_plain/b54180ad4297cf2d3fd943bf78976f8d34d5eea9..06f665a8e8809982e6649d0ed55990581122f4bf:/tests/util/test-init.sh diff --git a/tests/util/test-init.sh b/tests/util/test-init.sh new file mode 100644 index 0000000..e8a53da --- /dev/null +++ b/tests/util/test-init.sh @@ -0,0 +1,118 @@ +# 2ooM: The Master of Orion II Reverse Engineering Project +# Common test suite initialization functions. +# Copyright © 2013 Nick Bowler +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This file incorporates work covered by the following copyright and +# permission notice: +# +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set -e + +test ${test_lib_sourced-no} = yes && return 0 +test_lib_sourced=yes + +# CDPATH is evil if used in non-interactive scripts (and even more +# evil if exported in the environment). +CDPATH=; unset CDPATH + +# Be more Bourne compatible. +# (Snippet inspired to configure's initialization in Autoconf 2.64) +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + setopt NO_GLOB_SUBST + # If Zsh is not started directly in POSIX-compatibility mode, it has + # some incompatibilities in the handling of $0 that conflict with our + # usage; i.e., $0 inside a file sourced with the '.' builtin is + # temporarily set to the name of the sourced file. Work around that. + # Note that a bug in some versions of Zsh prevents us from resetting $0 + # in a sourced script, so the use of $argv0. For more info see: + # + # The apparently useless 'eval' here is needed by at least dash 0.5.2, + # to prevent it from bailing out with an error like: + # "Syntax error: Bad substitution". + eval 'argv0=${functrace[-1]%:*}' && test -f "$argv0" || { + echo "Cannot determine the path of running test script." >&2 + echo "Your Zsh (version $ZSH_VERSION) is probably too old." >&2 + exit 99 + } +else + argv0=$0 + # Ignore command substitution failure, for it might cause problems + # with "set -e" on some shells. + am_shell_opts=$(set -o) || : + case $am_shell_opts in *posix*) set -o posix;; esac + unset am_shell_opts +fi + +# A single whitespace character. +sp=' ' +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' + +# As autoconf-generated configure scripts do, ensure that IFS +# is defined initially, so that saving and restoring $IFS works. +IFS=$sp$tab$nl + +. "$srcdir/tests/util/tap-functions.sh" +. "$srcdir/tests/util/test-defs.sh" + +testdata=$srcdir/tests/testdata + +# We need a scratch directory for most tests, so set that up now. +dx_testname=`expr x"$argv0" : x'.*/\(.*\)\.'` +dx_testdir=tests/$dx_testname.dir + +dx_cleanup_testdir() +{ + exitstatus=$1 + + cd "$builddir" + if test "$exitstatus" -eq 0 && + test $tap_pass_count_ -eq $tap_count_ + then + rm -rf "$dx_testdir" + fi +} + +dx_create_testdir() +{ + $MKDIR_P "$dx_testdir" + trap 'dx_cleanup_testdir $?' 0 + cd "$dx_testdir" +} + +# Variables to run the LBX tools. Default to the build tree, but can also be +# set explicitly to test installed tools. +: "${LBXTOOL=$builddir/lbxtool$EXEEXT}" +: "${LBXIMG=$builddir/lbximg$EXEEXT}" + +# Set MALLOC_CHECK_ in the environment of the test programs which will enable +# malloc instrumentation on glibc-based systems to hopefully catch some forms +# of memory corruption. +dx_test_wrapper="$builddir/libtool --mode=execute env MALLOC_CHECK_=3" +LBXTOOL="$dx_test_wrapper $LBXTOOL" +LBXIMG="$dx_test_wrapper $LBXIMG"