{
cat >&2 <<EOF
-Usage: $0 [options] input_file
+Usage: $0 [options] [input_file]
input_file: the source code for the test program
WINETEST_DEBUG=${WINETEST_DEBUG:-1}
# parse command-line options
-while [ "$#" != 0 ]; do
+while [ "$#" -gt 0 ]; do
case "$1" in
-h)
usage
shift; topobjdir="$1"
if [ ! -d "$topobjdir" ]; then usage; fi
;;
- --)
- break
- ;;
*)
- infile="$1"
+ break
;;
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`
+ # 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
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
+ echo "Wrong -T argument, $topobjdir/server/wineserver does not exist" 1>&2
usage
fi
else
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
WINETEST_PLATFORM=${platform:-wine}
export WINETEST_PLATFORM WINETEST_DEBUG
-exec "$topobjdir/wine" "$program" "$infile" "$@"
+# 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" "$@"