Browse Source

* Added SkipTimings option

git-svn-id: trunk@24163 -
michael 12 years ago
parent
commit
914b5a41d9

+ 13 - 8
packages/fcl-fpcunit/src/consoletestrunner.pas

@@ -29,10 +29,10 @@ uses
   dom;
 
 const
-  Version = '0.2';
+  Version = '0.3';
 
 type
-  TFormat = (fPlain, fLatex, fXML);
+  TFormat = (fPlain, fLatex, fXML, fPlainNoTiming);
 
 var
   DefaultFormat : TFormat = fXML;
@@ -73,8 +73,8 @@ uses testdecorator;
 
 const
   ShortOpts = 'alhp';
-  DefaultLongOpts: array[1..8] of string =
-     ('all', 'list', 'progress', 'help',
+  DefaultLongOpts: array[1..9] of string =
+     ('all', 'list', 'progress', 'help', 'skiptiming',
       'suite:', 'format:', 'file:', 'stylesheet:');
 
   { TProgressWriter }
@@ -145,14 +145,15 @@ end;
 function TTestRunner.GetResultsWriter: TCustomResultsWriter;
 begin
   case FormatParam of
-    fLatex: Result := TLatexResultsWriter.Create(nil);
-    fPlain: Result := TPlainResultsWriter.Create(nil);
+    fLatex:         Result := TLatexResultsWriter.Create(nil);
+    fPlain:         Result := TPlainResultsWriter.Create(nil);
   else
     begin
       Result := TXmlResultsWriter.Create(nil);
       ExtendXmlDocument(TXMLResultsWriter(Result).Document);
     end;
   end;
+  Result.SkipTiming:=HasOption('skiptiming');
 end;
 
 procedure TTestRunner.DoTestRun(ATest: TTest);
@@ -211,6 +212,7 @@ begin
     writeln('  --format=latex            output as latex source (only list implemented)');
     writeln('  --format=plain            output as plain ASCII source');
     writeln('  --format=xml              output as XML source (default)');
+    writeln('  --skiptiming              Do not output timings (useful for diffs of testruns)');
     writeln('  --stylesheet=<reference>   add stylesheet reference');
     writeln('  --file=<filename>         output results to file');
     writeln;
@@ -232,6 +234,8 @@ begin
       FormatParam := fLatex
     else if CompareText(GetOptionValue('format'),'plain')=0 then
       FormatParam := fPlain
+    else if CompareText(GetOptionValue('format'),'plainnotiming')=0 then
+      FormatParam := fPlainNoTiming
     else if CompareText(GetOptionValue('format'),'xml')=0 then
       FormatParam := fXML;
   end;
@@ -369,8 +373,9 @@ begin
   //get a list of all registed tests
   if HasOption('l', 'list') then
     case FormatParam of
-      fLatex: Write(GetSuiteAsLatex(GetTestRegistry));
-      fPlain: Write(GetSuiteAsPlain(GetTestRegistry));
+      fLatex:         Write(GetSuiteAsLatex(GetTestRegistry));
+      fPlain:         Write(GetSuiteAsPlain(GetTestRegistry));
+      fPlainNoTiming: Write(GetSuiteAsPlain(GetTestRegistry));
     else
       Write(GetSuiteAsLatex(GetTestRegistry));;
     end;

+ 4 - 0
packages/fcl-fpcunit/src/fpcunitreport.pp

@@ -62,6 +62,8 @@ type
     procedure IncrementIgnores;
   end;
 
+  { TCustomResultsWriter }
+
   TCustomResultsWriter = class(TComponent, ITestListener)
   private
     FLevel: integer;
@@ -79,6 +81,7 @@ type
     FOnEndTest: TTestEvent;
     FOnStartTestSuite: TTestEvent;
     FOnEndTestSuite: TTestEvent;
+    FSkipTiming: Boolean;
   protected
     procedure WriteTestHeader(ATest: TTest; ALevel: integer; ACount: integer); virtual;
     procedure WriteTestFooter(ATest: TTest; ALevel: integer; ATiming: TDateTime); virtual;
@@ -118,6 +121,7 @@ type
     property OnEndTest: TTestEvent read FOnEndTest write FOnEndTest;
     property OnStartTestSuite: TTestEvent read FOnStartTestSuite write FOnStartTestSuite;
     property OnEndTestSuite: TTestEvent read FOnEndTestSuite write FOnEndTestSuite;
+    Property SkipTiming : Boolean Read FSkipTiming Write FSkipTiming;
   end; 
 
 implementation

+ 16 - 5
packages/fcl-fpcunit/src/latextestreport.pp

@@ -154,10 +154,16 @@ begin
 end;
 
 procedure TLatexResultsWriter.WriteTestFooter(ATest: TTest; ALevel: integer; ATiming: TDateTime);
+
+Var
+  S : String;
 begin
   inherited;
-  FDoc.Add(StringOfChar(' ',ALevel*2)+ '  '+ '\item[-] ' + FormatDateTime('ss.zzz', ATiming)  
-    + '  ' + EscapeText(ATest.TestName));
+  S:=StringOfChar(' ',ALevel*2)+ '  '+ '\item[-] ';
+  if Not SkipTiming then
+    S:=S+FormatDateTime('ss.zzz', ATiming);
+  S:=S+ '  ' + EscapeText(ATest.TestName);
+  FDoc.Add(S);
   if Assigned(FTempFailure) then
   begin
     //check if it's an error 
@@ -200,13 +206,18 @@ procedure TLatexResultsWriter.WriteSuiteFooter(ATestSuite: TTestSuite; ALevel: i
   ANumIgnores: integer);
 var
   idx: integer;
+  S : String;
+
 begin
   inherited;
   FDoc.Add(StringOfChar(' ',ALevel*2)+ ' \end{itemize}');
   idx := Integer(FSuiteHeaderIdx[FSuiteHeaderIdx.Count -1]);
-  FDoc[idx] := FDoc[idx] + ' {\color{Blue}'+ '  Time:'+ FormatDateTime('ss.zzz', ATiming)+
-    ' N:'+ IntToStr(ANumRuns)+ ' E:'+ IntToStr(ANumErrors)+ ' F:'+ IntToStr(ANumFailures)+ 
-    ' I:'+ IntToStr(ANumIgnores)+'}';
+  S:= ' {\color{Blue}';
+  if Not SkipTiming then
+    S:=S+ ' Time: '+FormatDateTime('ss.zzz', ATiming);
+  S:=S+' N:'+ IntToStr(ANumRuns)+ ' E:'+ IntToStr(ANumErrors)+ ' F:'+ IntToStr(ANumFailures)+
+  ' I:'+ IntToStr(ANumIgnores)+'}';
+  FDoc[idx] := FDoc[idx] +S;
   FSuiteHeaderIdx.Delete(FSuiteHeaderIdx.Count -1);
 end;
 

+ 15 - 5
packages/fcl-fpcunit/src/plaintestreport.pp

@@ -102,10 +102,17 @@ begin
 end;
 
 procedure TPlainResultsWriter.WriteTestFooter(ATest: TTest; ALevel: integer; ATiming: TDateTime);
+
+Var
+  S : String;
+
 begin
   inherited;
-  FDoc.Add('  ' + StringOfChar(' ',ALevel*2) +  FormatDateTime('ss.zzz', ATiming) + '  ' 
-    + ATest.TestName);
+  S:='  ' + StringOfChar(' ',ALevel*2);
+  if Not SkipTiming then
+    S:=S + FormatDateTime('ss.zzz', ATiming) + '  ';
+  S:=S + ATest.TestName;
+  FDoc.Add(S);
   if Assigned(FTempFailure) then
   begin
     //check if it's an error 
@@ -137,12 +144,15 @@ procedure TPlainResultsWriter.WriteSuiteFooter(ATestSuite: TTestSuite; ALevel: i
   ANumIgnores: integer);
 var
   idx: integer;
+  S: String;
 begin
   inherited;
   idx := Integer(FSuiteHeaderIdx[FSuiteHeaderIdx.Count -1]);
-  FDoc[idx] := FDoc[idx] + ' Time:'+ FormatDateTime('ss.zzz', ATiming)+
-    ' N:'+ IntToStr(ANumRuns)+ ' E:'+ IntToStr(ANumErrors)+ ' F:'+ IntToStr(ANumFailures)+ 
-    ' I:'+ IntToStr(ANumIgnores);
+  if Not SkipTiming then
+    S:= ' Time:'+ FormatDateTime('ss.zzz', ATiming);
+  S:=S+ ' N:'+ IntToStr(ANumRuns)+ ' E:'+ IntToStr(ANumErrors)+ ' F:'+ IntToStr(ANumFailures)+
+    ' I:'+ IntToStr(ANumIgnores) ;
+  FDoc[idx] := FDoc[idx]+S;
   FSuiteHeaderIdx.Delete(FSuiteHeaderIdx.Count -1);
 end;