2003-12-07 Casper S. Hornstrup <chorns@users.sourceforge.net>
authorCasper Hornstrup <chorns@users.sourceforge.net>
Sun, 7 Dec 2003 11:34:41 +0000 (11:34 +0000)
committerCasper Hornstrup <chorns@users.sourceforge.net>
Sun, 7 Dec 2003 11:34:41 +0000 (11:34 +0000)
* 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.

svn path=/trunk/; revision=6883

reactos/ChangeLog
reactos/regtests/Makefile
reactos/regtests/kmregtests/.cvsignore
reactos/regtests/kmregtests/Makefile
reactos/regtests/kmregtests/tests/.cvsignore [new file with mode: 0644]
reactos/regtests/win32base/.cvsignore
reactos/regtests/win32base/Makefile
reactos/regtests/win32base/tests/.cvsignore [new file with mode: 0644]
reactos/regtests/win32base/tests/file-1.c [moved from reactos/regtests/win32base/file-1.c with 100% similarity, mode: 0644]
reactos/tools/helper.mk
reactos/tools/regtests.c

index a740789..f1e0376 100644 (file)
@@ -1,3 +1,20 @@
+2003-12-07  Casper S. Hornstrup  <chorns@users.sourceforge.net>
+
+       * 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  <martin-fuchs@gmx.net>
        * Doxyfile, Makefile: initial doxygen configuration
        * drivers/Doxyfile, drivers/Makefile: Ditto.
index f0ed7bb..712e3fe 100755 (executable)
@@ -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
index 88969df..17a1a7f 100755 (executable)
@@ -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 (file)
index 0000000..5761abc
--- /dev/null
@@ -0,0 +1 @@
+*.o
index 2e519f5..4ffa79b 100755 (executable)
@@ -4,4 +4,5 @@
 *.coff
 *.sym
 *.map
-_regtests.c
\ No newline at end of file
+_regtests.c
+Makefile.tests
index e93c5a4..99e3806 100755 (executable)
@@ -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 (file)
index 0000000..5761abc
--- /dev/null
@@ -0,0 +1 @@
+*.o
old mode 100755 (executable)
new mode 100644 (file)
similarity index 100%
rename from reactos/regtests/win32base/file-1.c
rename to reactos/regtests/win32base/tests/file-1.c
index fe2c5ad..d961dc7 100644 (file)
@@ -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)
 
index e4477c9..062a990 100755 (executable)
@@ -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 */