diff --git a/reactos/ChangeLog b/reactos/ChangeLog index a7407897258..f1e037625fa 100644 --- a/reactos/ChangeLog +++ b/reactos/ChangeLog @@ -1,3 +1,20 @@ +2003-12-07 Casper S. Hornstrup + + * regtests/Makefile: Generate regression test registrations. + * regtests/kmregtests/.cvsignore: Ignore Makefile.tests. + * regtests/win32base/.cvsignore: Ditto. + * regtests/kmregtests/Makefile: Include Makefile.tests. + * regtests/win32base/Makefile: Ditto. + * regtests/kmregtests/tests: New directory. + * regtests/win32base/tests: Ditto. + * regtests/kmregtests/tests/.cvsignore: New file. + * regtests/win32base/tests/.cvsignore: Ditto. + * tools/helper.mk: Remove TARGET_GENREGTESTS. + * tools/regtests.c: Generate makefile for regression tests. + (change_extension): New function. + * regtests/win32base/file-1.c: Move ... + * regtests/win32base/tests/file-1.c: ... here. + 2003-12-06 Martin Fuchs * Doxyfile, Makefile: initial doxygen configuration * drivers/Doxyfile, drivers/Makefile: Ditto. diff --git a/reactos/regtests/Makefile b/reactos/regtests/Makefile index f0ed7bb989c..712e3fe9128 100755 --- a/reactos/regtests/Makefile +++ b/reactos/regtests/Makefile @@ -1,6 +1,8 @@ -# $Id: Makefile,v 1.1 2003/07/11 18:13:57 chorns Exp $ +# $Id: Makefile,v 1.2 2003/12/07 11:34:41 chorns Exp $ -all: +PATH_TO_TOP = .. + +all: registrations $(MAKE) -C shared all $(MAKE) -C win32base all $(MAKE) -C kmregtests all @@ -8,11 +10,13 @@ all: $(MAKE) -C regtests all clean: - $(MAKE) -C shared clean - $(MAKE) -C win32base clean - $(MAKE) -C kmregtests clean - $(MAKE) -C kmrtint clean - $(MAKE) -C regtests clean + - $(MAKE) -C shared clean + - $(MAKE) -C win32base clean + - $(MAKE) -C kmregtests clean + - $(MAKE) -C kmrtint clean + - $(MAKE) -C regtests clean + - $(RM) ./kmregtests/_regtests.c ./kmregtests/Makefile.tests + - $(RM) ./win32base/_regtests.c ./win32base/Makefile.tests install: $(MAKE) -C shared install @@ -21,5 +25,10 @@ install: $(MAKE) -C kmrtint install $(MAKE) -C regtests install -.PHONY: all clean install - +registrations: + $(REGTESTS) ./kmregtests/tests ./kmregtests/_regtests.c ./kmregtests/Makefile.tests + $(REGTESTS) ./win32base/tests ./win32base/_regtests.c ./win32base/Makefile.tests + +.PHONY: all clean install registrations + +include $(PATH_TO_TOP)/rules.mak diff --git a/reactos/regtests/kmregtests/.cvsignore b/reactos/regtests/kmregtests/.cvsignore index e5ef4e7a56f..90b639a6107 100755 --- a/reactos/regtests/kmregtests/.cvsignore +++ b/reactos/regtests/kmregtests/.cvsignore @@ -7,3 +7,4 @@ *.map _regtests.c *.sys +Makefile.tests diff --git a/reactos/regtests/kmregtests/Makefile b/reactos/regtests/kmregtests/Makefile index 88969dfece0..17a1a7ffe83 100755 --- a/reactos/regtests/kmregtests/Makefile +++ b/reactos/regtests/kmregtests/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.2 2003/11/19 05:53:37 vizzini Exp $ +# $Id: Makefile,v 1.3 2003/12/07 11:34:41 chorns Exp $ PATH_TO_TOP = ../.. @@ -12,14 +12,13 @@ TARGET_LIBS = $(SDK_PATH_LIB)/rtshared.a TARGET_CFLAGS = -I../shared -Werror -Wall -TARGET_GENREGTESTS = yes +include Makefile.tests TARGET_OBJECTS = \ _regtests.o \ - driver.o + driver.o \ + $(addprefix tests/, $(TESTS)) include $(PATH_TO_TOP)/rules.mak include $(TOOLS_PATH)/helper.mk - -# EOF diff --git a/reactos/regtests/kmregtests/tests/.cvsignore b/reactos/regtests/kmregtests/tests/.cvsignore new file mode 100644 index 00000000000..5761abcfdf0 --- /dev/null +++ b/reactos/regtests/kmregtests/tests/.cvsignore @@ -0,0 +1 @@ +*.o diff --git a/reactos/regtests/win32base/.cvsignore b/reactos/regtests/win32base/.cvsignore index 2e519f589df..4ffa79bea45 100755 --- a/reactos/regtests/win32base/.cvsignore +++ b/reactos/regtests/win32base/.cvsignore @@ -4,4 +4,5 @@ *.coff *.sym *.map -_regtests.c \ No newline at end of file +_regtests.c +Makefile.tests diff --git a/reactos/regtests/win32base/Makefile b/reactos/regtests/win32base/Makefile index e93c5a4b000..99e3806ae87 100755 --- a/reactos/regtests/win32base/Makefile +++ b/reactos/regtests/win32base/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.2 2003/11/19 05:53:38 vizzini Exp $ +# $Id: Makefile,v 1.3 2003/12/07 11:34:41 chorns Exp $ PATH_TO_TOP = ../.. @@ -14,12 +14,12 @@ TARGET_CFLAGS = -I../shared -Wall -Werror TARGET_BASE = 0x60000000 -TARGET_GENREGTESTS = yes +include Makefile.tests TARGET_OBJECTS = \ _regtests.o \ driver.o \ - file-1.o + $(addprefix tests/, $(TESTS)) include $(PATH_TO_TOP)/rules.mak diff --git a/reactos/regtests/win32base/tests/.cvsignore b/reactos/regtests/win32base/tests/.cvsignore new file mode 100644 index 00000000000..5761abcfdf0 --- /dev/null +++ b/reactos/regtests/win32base/tests/.cvsignore @@ -0,0 +1 @@ +*.o diff --git a/reactos/regtests/win32base/file-1.c b/reactos/regtests/win32base/tests/file-1.c old mode 100755 new mode 100644 similarity index 100% rename from reactos/regtests/win32base/file-1.c rename to reactos/regtests/win32base/tests/file-1.c diff --git a/reactos/tools/helper.mk b/reactos/tools/helper.mk index fe2c5ade262..d961dc7250e 100644 --- a/reactos/tools/helper.mk +++ b/reactos/tools/helper.mk @@ -1,4 +1,4 @@ -# $Id: helper.mk,v 1.46 2003/12/02 11:38:47 gvg Exp $ +# $Id: helper.mk,v 1.47 2003/12/07 11:34:41 chorns Exp $ # # Helper makefile for ReactOS modules # Variables this makefile accepts: @@ -45,7 +45,6 @@ # $TARGET_PCH = Filename of header to use to generate a PCH if supported by the compiler (optional) # $TARGET_BOOTSTRAP = Whether this file is needed to bootstrap the installation (no,yes) (optional) # $TARGET_BOOTSTRAP_NAME = Name on the installation medium (optional) -# $TARGET_GENREGTESTS = Generate regression test registrations (optional) # $WINE_MODE = Compile using WINE headers (no,yes) (optional) # $WINE_RC = Name of .rc file for WINE modules (optional) # $SUBDIRS = Subdirs in which to run make (optional) @@ -557,21 +556,7 @@ $(MK_IMPLIBPATH)/$(MK_IMPLIB_FULLNAME): $(TARGET_OBJECTS) $(MK_DEFNAME) else # MK_IMPLIBONLY -all: $(MK_GENREGTESTS) $(MK_FULLNAME) $(MK_NOSTRIPNAME) $(SUBDIRS:%=%_all) - - -ifeq ($(TARGET_GENREGTESTS),yes) -_regtests_phony: - $(RM) _regtests.c -.PHONY: _regtests_phony -_regtests.c: _regtests_phony - $(REGTESTS) . _regtests.c - MK_GENREGTESTS := _regtests_phony - MK_GENREGTESTS_CLEAN := _regtests.c _regtests.o -else - MK_GENREGTESTS := - MK_GENREGTESTS_CLEAN := -endif +all: $(MK_FULLNAME) $(MK_NOSTRIPNAME) $(SUBDIRS:%=%_all) ifeq ($(MK_IMPLIB),yes) @@ -793,7 +778,7 @@ MK_CLEANDEPS := $(join $(dir $(MK_CLEANFILTERED)), $(addprefix ., $(notdir $(MK_ clean: $(SUBDIRS:%=%_clean) - $(RM) *.o depend.d *.pch $(MK_BASENAME).sym $(MK_BASENAME).a $(TARGET_PATH)/$(MK_RES_BASE).coff \ - $(MK_FULLNAME) $(MK_NOSTRIPNAME) $(MK_CLEANFILES) $(MK_CLEANDEPS) $(MK_GENREGTESTS_CLEAN) $(MK_BASENAME).map \ + $(MK_FULLNAME) $(MK_NOSTRIPNAME) $(MK_CLEANFILES) $(MK_CLEANDEPS) $(MK_BASENAME).map \ junk.tmp base.tmp temp.exp \ $(TARGET_CLEAN) diff --git a/reactos/tools/regtests.c b/reactos/tools/regtests.c index e4477c99e6b..062a990429e 100755 --- a/reactos/tools/regtests.c +++ b/reactos/tools/regtests.c @@ -35,6 +35,7 @@ static FILE *out; static char *path; static char *file; +static char *makefile; char* convert_path(char* origpath) { @@ -81,12 +82,41 @@ static void write_line(char *line) n_out = fwrite(&buf[0], 1, strlen(buf), out); } -void register_test(char *filename, int prototype) +static void change_extension(char *filenamebuffer, char *filename, char *newextension) +{ + char *ptr; + + if (newextension == NULL) + { + strcpy(filenamebuffer, filename); + return; + } + + ptr = strrchr(filename, '.'); + if (ptr != NULL) + { + strncpy(filenamebuffer, filename, ptr - filename); + filenamebuffer[ptr - filename] = 0; + strcat(filenamebuffer, newextension); + } + else + { + strcpy(filenamebuffer, filename); + strcat(filenamebuffer, newextension); + } +} + +/* + * filename - name of file to make registrations for + * regtype - type of registration (0 = prototype, 1 = call, 2 = makefile) + */ +void register_test(char *filename, int type) { char ext[100]; char testname[100]; char call[100]; char regtest[100]; + char filenamebuffer[MAX_PATH]; int i, j; strcpy(testname, filename); @@ -132,17 +162,23 @@ void register_test(char *filename, int prototype) j++; } - if (prototype) + if (type == 0) { sprintf(regtest, "extern int %sTest(int Command, char *Buffer);", testname); write_line(regtest); } - else + else if (type == 1) { sprintf(call, "%sTest", testname); sprintf(regtest, " AddTest((TestRoutine)%s);", call); write_line(regtest); } + else if (type == 2) + { + change_extension(filenamebuffer, filename, ".o"); + sprintf(regtest, "%s \\", filenamebuffer); + write_line(regtest); + } } #ifdef WIN32 @@ -150,14 +186,14 @@ void register_test(char *filename, int prototype) /* Win32 version */ static void -make_file_list (int prototype) +make_file_list (int type) { struct _finddata_t f; int findhandle; char searchbuf[MAX_PATH]; strcpy(searchbuf, path); - strcpy(searchbuf, "*.*"); + strcat(searchbuf, "*.*"); findhandle =_findfirst(searchbuf, &f); if (findhandle != -1) { @@ -169,7 +205,7 @@ make_file_list (int prototype) continue; } - register_test(f.name, prototype); + register_test(f.name, type); } while (_findnext(findhandle, &f) == 0); _findclose(findhandle); @@ -180,7 +216,7 @@ make_file_list (int prototype) /* Linux version */ static void -make_file_list (int prototype) +make_file_list (int type) { DIR *dirp; struct dirent *entry; @@ -225,7 +261,7 @@ make_file_list (int prototype) continue; } - register_test(entry->d_name, prototype); + register_test(entry->d_name, type); } } closedir(dirp); @@ -273,7 +309,7 @@ make_file_list (int prototype) continue; } - register_test(entry->d_name, prototype); + register_test(entry->d_name, type); } closedir(dirp); } @@ -289,15 +325,16 @@ make_file_list (int prototype) #endif static char HELP[] = - "REGTESTS path file\n" + "REGTESTS path file makefile\n" "\n" - " path Path to files\n" - " file File to create\n"; + " path Path to files\n" + " file Registration file to create\n" + " makefile Makefile to create\n"; int main(int argc, char **argv) { char buf[MAX_PATH]; - if (argc < 2) + if (argc < 4) { puts(HELP); return 1; @@ -325,10 +362,19 @@ int main(int argc, char **argv) return 1; } + makefile = convert_path(argv[3]); + if (makefile[0] == 0) + { + printf("Missing makefile\n"); + return 1; + } + + + /* Registration file */ out = fopen(file, "wb"); if (out == NULL) { - perror("Cannot open output file"); + perror("Cannot create output file"); return 1; } @@ -337,7 +383,7 @@ int main(int argc, char **argv) write_line("typedef int (*TestRoutine)(int Command, char *Buffer);"); write_line(""); - make_file_list(1); + make_file_list(0); write_line(""); write_line("extern void AddTest(TestRoutine Routine);"); @@ -345,13 +391,32 @@ int main(int argc, char **argv) write_line("void RegisterTests()"); write_line("{"); - make_file_list(0); + make_file_list(1); write_line("}"); fclose(out); + + /* Makefile */ + out = fopen(makefile, "wb"); + if (out == NULL) + { + perror("Cannot create output makefile"); + return 1; + } + + write_line("# This file is autogenerated."); + write_line(""); + write_line("TESTS = \\"); + + make_file_list(2); + + write_line(""); + + fclose(out); + + printf("Successfully generated regression test registrations.\n"); + return 0; } - -/* EOF */