2002-11-11 21:25:54 +01:00
|
|
|
#!/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
|
2006-05-18 14:49:52 +02:00
|
|
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
2002-11-11 21:25:54 +01:00
|
|
|
#
|
|
|
|
|
|
|
|
usage()
|
|
|
|
{
|
2002-12-11 01:18:11 +01:00
|
|
|
cat >&2 <<EOF
|
2002-11-11 21:25:54 +01:00
|
|
|
|
|
|
|
Usage: $0 [options] input_file
|
|
|
|
|
2006-10-21 11:35:57 +02:00
|
|
|
input_file: the source code for the test program
|
|
|
|
|
2002-11-11 21:25:54 +01:00
|
|
|
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"
|
2002-12-16 23:11:51 +01:00
|
|
|
if [ ! -d "$topobjdir" ]; then usage; fi
|
|
|
|
;;
|
|
|
|
--)
|
|
|
|
break
|
2002-11-11 21:25:54 +01:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
infile="$1"
|
2002-12-16 23:11:51 +01:00
|
|
|
;;
|
2002-11-11 21:25:54 +01:00
|
|
|
esac
|
|
|
|
shift
|
|
|
|
done
|
|
|
|
|
|
|
|
# we must have found an input file
|
2002-12-11 01:18:11 +01:00
|
|
|
if [ ! -f "$infile" ]; then usage; fi
|
2002-11-11 21:25:54 +01:00
|
|
|
|
|
|
|
if [ -z "$program" ]; then
|
2008-10-07 18:17:39 +02:00
|
|
|
# try to autodetect the test program name based on the working directory
|
|
|
|
working_path=`pwd`
|
|
|
|
working_basename=`basename "$working_path"`
|
|
|
|
if [ "$working_basename" = "tests" ]; then
|
|
|
|
parent_path=`dirname "$working_path"`
|
|
|
|
parent_basename=`basename "$parent_path"`
|
|
|
|
program="${parent_basename}_test.exe.so"
|
|
|
|
elif [ -d "tests" ]; then
|
|
|
|
program="tests/${working_basename}_test.exe.so"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if [ ! -f "$program" ]; then
|
|
|
|
echo "Can't find the test program, use the -p argument to specify one" 1>&2
|
|
|
|
usage
|
2002-11-11 21:25:54 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
# check/detect topobjdir
|
|
|
|
if [ -n "$topobjdir" ]; then
|
2002-12-16 23:11:51 +01:00
|
|
|
if [ ! -f "$topobjdir/server/wineserver" ]
|
|
|
|
then
|
2008-10-07 18:17:39 +02:00
|
|
|
echo "Wrong -T argument, $topobjdir/server/wineserver does not exist" 1>&2
|
2002-11-11 21:25:54 +01:00
|
|
|
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="../../.."
|
2008-10-07 18:16:36 +02:00
|
|
|
else
|
2008-10-07 18:17:39 +02:00
|
|
|
echo "Can't find the top of the Wine tree (use the -T argument)" 1>&2
|
2008-10-07 18:16:36 +02:00
|
|
|
usage
|
2002-11-11 21:25:54 +01:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# set environment variables needed for Wine
|
|
|
|
|
2003-09-25 22:33:41 +02:00
|
|
|
if [ -n "$modules" ]; then
|
|
|
|
WINEDLLOVERRIDES="$WINEDLLOVERRIDES;$modules=b"
|
|
|
|
export WINEDLLOVERRIDES
|
2002-11-11 21:25:54 +01:00
|
|
|
fi
|
|
|
|
WINETEST_PLATFORM=${platform:-wine}
|
|
|
|
export WINETEST_PLATFORM WINETEST_DEBUG
|
|
|
|
|
2008-07-19 01:31:43 +02:00
|
|
|
# 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" "$@"
|