123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- #!/bin/sh
- #
- # Wrapper script to run tests from inside the Wine tree
- #
- # Usage: runtest [options] input_file
- #
- # Copyright 2002 Alexandre Julliard
- # Copyright 2002 Dimitrie O. Paun
- #
- # This library is free software; you can redistribute it and/or
- # modify it under the terms of the GNU Lesser General Public
- # License as published by the Free Software Foundation; either
- # version 2.1 of the License, or (at your option) any later version.
- #
- # This library 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
- # Lesser General Public License for more details.
- #
- # You should have received a copy of the GNU Lesser General Public
- # License along with this library; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- #
- usage()
- {
- cat >&2 <<EOF
- Usage: $0 [options] [input_file]
- input_file: the source code for the test program
- Options:
- -q quiet mode
- -v verbose mode (can be specified multiple times)
- -i interactive mode (runs even more tests)
- -s announce successful tests
- -p prog name of the program to run for C tests
- -P name set the current platform name
- -M names set the module names to be tested
- -T dir set Wine tree top directory (autodetected if not specified)
- EOF
- exit 1
- }
- # Default values
- platform=$WINETEST_PLATFORM
- WINETEST_DEBUG=${WINETEST_DEBUG:-1}
- # parse command-line options
- while [ "$#" -gt 0 ]; do
- case "$1" in
- -h)
- usage
- ;;
- -p)
- shift; program="$1"
- ;;
- -q)
- WINETEST_DEBUG=0
- ;;
- -v)
- WINETEST_DEBUG=`expr $WINETEST_DEBUG + 1`
- ;;
- -i)
- WINETEST_INTERACTIVE=1
- export WINETEST_INTERACTIVE
- ;;
- -s)
- WINETEST_REPORT_SUCCESS=1
- export WINETEST_REPORT_SUCCESS
- ;;
- -P)
- shift; platform="$1"
- ;;
- -M)
- shift; modules="$1"
- ;;
- -T)
- shift; topobjdir="$1"
- if [ ! -d "$topobjdir" ]; then usage; fi
- ;;
- *)
- break
- ;;
- esac
- shift
- done
-
- if [ -z "$program" ]; then
- # try to autodetect the test program name based on the working directory
- working_path=`pwd`
- case $working_path in
- */dlls/*/tests)
- parent_path=`dirname "$working_path"`
- program=`basename "$parent_path"`_test.exe
- ;;
- */dlls/*)
- program=tests/`basename "$working_path"`_test.exe
- ;;
- */programs/*/tests)
- parent_path=`dirname "$working_path"`
- program=`basename "$parent_path"`.exe_test.exe
- ;;
- */programs/*)
- program=tests/`basename "$working_path"`.exe_test.exe
- ;;
- esac
- test -f "$program" || program="$program".so
- fi
- if [ ! -f "$program" ]; then
- echo "Can't find the test program, use the -p argument to specify one" 1>&2
- usage
- fi
- # check/detect topobjdir
- if [ -n "$topobjdir" ]; then
- if [ ! -f "$topobjdir/server/wineserver" ]
- then
- echo "Wrong -T argument, $topobjdir/server/wineserver does not exist" 1>&2
- usage
- fi
- else
- if [ -f "./server/wineserver" ]; then topobjdir="."
- elif [ -f "../server/wineserver" ]; then topobjdir=".."
- elif [ -f "../../server/wineserver" ]; then topobjdir="../.."
- elif [ -f "../../../server/wineserver" ]; then topobjdir="../../.."
- else
- echo "Can't find the top of the Wine tree (use the -T argument)" 1>&2
- usage
- fi
- fi
- # set environment variables needed for Wine
- if [ -n "$modules" ]; then
- WINEDLLOVERRIDES="$WINEDLLOVERRIDES;$modules=b"
- export WINEDLLOVERRIDES
- fi
- WINETEST_PLATFORM=${platform:-wine}
- export WINETEST_PLATFORM WINETEST_DEBUG
- # WINETEST_WRAPPER is normally empty, but can be set by caller, e.g.
- # WINETEST_WRAPPER=time
- # would give data about how long each test takes, and
- # WINETEST_WRAPPER=valgrind
- # would run the tests under valgrind to look for memory errors.
- exec $WINETEST_WRAPPER "$topobjdir/wine" "$program" "$@"
|