wine/tools/runtest
2008-07-21 14:37:02 +02:00

127 lines
3.1 KiB
Bash
Executable file

#!/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)
-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 [ "$#" != 0 ]; do
case "$1" in
-h)
usage
;;
-p)
shift; program="$1"
;;
-q)
WINETEST_DEBUG=0
;;
-v)
WINETEST_DEBUG=`expr $WINETEST_DEBUG + 1`
;;
-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
;;
*)
infile="$1"
;;
esac
shift
done
# we must have found an input file
if [ ! -f "$infile" ]; then usage; fi
# set program to the .c file base name if not specified otherwise
if [ -z "$program" ]; then
program=`basename "$infile" .c`
fi
# check/detect topobjdir
if [ -n "$topobjdir" ]; then
if [ ! -f "$topobjdir/server/wineserver" ]
then
echo "Wrong -T argument, $topobjdir/server/wineserver does not exist" 2>&1
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="../../.."
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" "$infile" "$@"