| #!/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.so | 
 |           ;; | 
 |         */dlls/*) | 
 |           program=tests/`basename "$working_path"`_test.exe.so | 
 |           ;; | 
 |         */programs/*/tests) | 
 |           parent_path=`dirname "$working_path"` | 
 |           program=`basename "$parent_path"`.exe_test.exe.so | 
 |           ;; | 
 |         */programs/*) | 
 |           program=tests/`basename "$working_path"`.exe_test.exe.so | 
 |           ;; | 
 |     esac | 
 | 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" "$@" |