Rewrite make_ctests and runtest in shell.
diff --git a/Make.rules.in b/Make.rules.in index 4076da6..8174c1d 100644 --- a/Make.rules.in +++ b/Make.rules.in
@@ -64,7 +64,7 @@ MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi_check/winapi_check WINEWRAPPER = $(TOPSRCDIR)/tools/winewrapper -RUNTEST = $(TOPSRCDIR)/programs/winetest/runtest +RUNTEST = $(TOPSRCDIR)/tools/runtest WINEBUILD = $(TOOLSDIR)/tools/winebuild/winebuild MAKEDEP = $(TOOLSDIR)/tools/makedep WRC = $(TOOLSDIR)/tools/wrc/wrc @@ -105,7 +105,7 @@ # Implicit rules -.SUFFIXES: .mc .rc .mc.rc .res .res.o .spec .spec.c .spec.def .pl .ok .cross.o +.SUFFIXES: .mc .rc .mc.rc .res .res.o .spec .spec.c .spec.def .ok .cross.o .c.o: $(CC) -c $(ALLCFLAGS) -o $@ $< @@ -137,9 +137,6 @@ .c.ok: $(RUNTEST) $(RUNTESTFLAGS) $< && touch $@ -.pl.ok: - $(RUNTEST) $(RUNTESTFLAGS) $< && touch $@ - # 'all' target first in case the enclosing Makefile didn't define any target all: Makefile
diff --git a/dlls/Maketest.rules.in b/dlls/Maketest.rules.in index 4c7a77f..08ab0cc 100644 --- a/dlls/Maketest.rules.in +++ b/dlls/Maketest.rules.in
@@ -45,7 +45,7 @@ # Rules for building test list $(TESTLIST): Makefile.in - $(TOPSRCDIR)/programs/winetest/make_ctests $(CTESTS) >$(TESTLIST) || $(RM) $(TESTLIST) + $(TOPSRCDIR)/tools/make_ctests $(CTESTS) >$(TESTLIST) || $(RM) $(TESTLIST) # Rules for checking that no imports are missing
diff --git a/tools/make_ctests b/tools/make_ctests new file mode 100755 index 0000000..0a9d5ca --- /dev/null +++ b/tools/make_ctests
@@ -0,0 +1,60 @@ +#!/bin/sh +# +# Script to generate a C file containing a list of tests +# +# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +cat <<EOF +/* Automatically generated file; DO NOT EDIT!! */ + +#include <stdio.h> +#include <stdlib.h> +#include "winbase.h" + +EOF + +for file in "$@"; do + test=`basename "$file" .c` + echo "extern void func_$test(void);" +done + +cat <<EOF + +struct test +{ + const char *name; + void (*func)(void); +}; + +static const struct test winetest_testlist[] = +{ +EOF + +for file in "$@"; do + test=`basename "$file" .c` + echo " { \"$test\", func_$test }," +done + +cat <<EOF + { 0, 0 } +}; + +#define WINETEST_WANT_MAIN +#include "wine/test.h" +EOF
diff --git a/tools/runtest b/tools/runtest new file mode 100755 index 0000000..14cb50a --- /dev/null +++ b/tools/runtest
@@ -0,0 +1,116 @@ +#!/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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +usage() +{ + cat >2 <<EOF + +Usage: $0 [options] input_file + +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 :; else usage; fi + ;; + *) + infile="$1" + esac + shift +done + +# we must have found an input file +if [ -f "$infile" ]; then :; else 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 : + else + 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 + WINEOPTIONS="$WINEOPTIONS --dll $modules=b" + export WINEOPTIONS +fi +WINETEST_PLATFORM=${platform:-wine} +export WINETEST_PLATFORM WINETEST_DEBUG + +exec "$topobjdir/wine" "$program" "$infile" "$@"