Browse Source

Add '-f' option to gparmake, to redirect dotest output to separate log files

Pierre Muller 11 months ago
parent
commit
e60bf232b9
1 changed files with 27 additions and 6 deletions
  1. 27 6
      tests/utils/gparmake.pp

+ 27 - 6
tests/utils/gparmake.pp

@@ -8,12 +8,18 @@ Uses
 procedure Usage;
   begin
     writeln('GParMake: create make rules for parallel execution of testsuite');
-    writeln('Usage: gparmake [-a] <outputfile> <dirname> <startchunk> <tests_per_chunk> <test1> [<test2> ...]');
+    writeln('Usage: gparmake [-a] [-f] <outputfile> <dirname> <startchunk> <tests_per_chunk> <test1> [<test2> ...]');
     writeln('Output: makefile fragment with rules to run the tests in sequences of <tests_per_chunk>');
+    writeln('  -a: Append to existing files');
+    writeln('  -f: redirect output to separate files');
     writeln;
     halt(1);
   end;
 
+var
+  doappend: boolean;
+  doredirect: boolean;
+
 { make all numbers of the same string length so they can be sorted
   lexographically }
 function rulenr2str(rulenr: longint): string;
@@ -28,11 +34,18 @@ function rulenr2str(rulenr: longint): string;
 
 procedure WriteChunkRule(rulenr: longint; const dirname, files: ansistring);
   var
-    rulestr: string;
+    rulestr, redirectfile: string;
   begin
     rulestr:=rulenr2str(rulenr)+dirname;
     writeln('$(TEST_OUTPUTDIR)/testchunk_',rulestr,'-stamp.$(TEST_FULL_TARGET): testprep-stamp.$(TEST_FULL_TARGET)');
-    writeln(#9'$(Q)$(DOTEST) $(DOTESTOPT) -Lchunk',rulestr,' -e ',files);
+    write(#9'$(Q)$(DOTEST) $(DOTESTOPT) -Lchunk',rulestr,' -e ',files);
+    if doredirect then
+      begin
+        redirectfile:=dirname+DirectorySeparator+rulestr+'.log';
+	writeln(' > '+redirectfile);
+      end
+    else
+      writeln;
     writeln(#9'$(ECHOREDIR) $(TEST_DATETIME) > $@');
     writeln;
     writeln('$(addsuffix .chunk',rulestr,', $(LOGFILES)) : $(TEST_OUTPUTDIR)/testchunk_',rulestr,'-stamp.$(TEST_FULL_TARGET)');
@@ -45,7 +58,6 @@ procedure WriteChunkRule(rulenr: longint; const dirname, files: ansistring);
 var
   startchunk: longint;
   dirname : ansistring;
-  doappend: boolean;
   FileList : TStringList;
 
 Function ProcessArgs: longint;
@@ -86,6 +98,7 @@ Function ProcessArgs: longint;
       Usage;
 
     doappend:=false;
+    doredirect:=false;
 
     paramnr:=1;
     if paramstr(paramnr)='-a' then
@@ -94,6 +107,12 @@ Function ProcessArgs: longint;
         inc(paramnr);
       end;
 
+    if paramstr(paramnr)='-f' then
+      begin
+        doredirect:=true;
+        inc(paramnr);
+      end;
+
     outputname:=paramstr(paramnr);
     inc(paramnr);
 
@@ -169,13 +188,15 @@ Function ProcessArgs: longint;
 
 procedure WriteWrapperRules(totalchunks: longint);
   const
-    lognames: array[1..3] of string[11] = ('log','faillist','longlog');
+    lognames: array[1..4] of string[11] = ('log','faillist','longlog','orderedlog');
   var
     logi,
     i: longint;
   begin
-    for logi:=1 to 3 do
+    for logi:=low(lognames) to high(lognames) do
       begin
+        if (logi=4) and not doredirect then
+          continue;
         write('$(TEST_OUTPUTDIR)/',lognames[logi],' :');
         for i:=startchunk to totalchunks do
           write(' $(TEST_OUTPUTDIR)/',lognames[logi],'.chunk',rulenr2str(i)+dirname);