Browse Source

+ Patch from Graeme Geldenhuys: Correct indentation of XML

git-svn-id: trunk@5024 -
michael 19 years ago
parent
commit
afbd50967c
1 changed files with 28 additions and 4 deletions
  1. 28 4
      fcl/fpcunit/testreport.pp

+ 28 - 4
fcl/fpcunit/testreport.pp

@@ -64,6 +64,23 @@ function TestResultAsPlain(aTestResult: TTestResult): string;
 
 
 implementation
 implementation
 
 
+var
+  uLevel: integer;    // indentation counter
+
+
+// Helper function: Return a string of spaces pIntLen long
+function trSpace(pIntLen: integer): string;
+var
+  i: integer;
+  sString: string;
+begin
+  sString := '';
+  for i := 1 to pIntLen do
+    sString := sString + ' ';
+  Result := sString;
+end;
+
+
 {TXMLResultsWriter}
 {TXMLResultsWriter}
 procedure TXMLResultsWriter.WriteHeader;
 procedure TXMLResultsWriter.WriteHeader;
 begin
 begin
@@ -131,7 +148,7 @@ end;
 
 
 procedure TPlainResultsWriter.StartTest(ATest: TTest);
 procedure TPlainResultsWriter.StartTest(ATest: TTest);
 begin
 begin
-  writeln('Test: ' , ATest.TestSuiteName + '.' + ATest.TestName);
+  write('Test: ' , ATest.TestSuiteName + '.' + ATest.TestName);
 end;
 end;
 
 
 procedure TPlainResultsWriter.EndTest(ATest: TTest);
 procedure TPlainResultsWriter.EndTest(ATest: TTest);
@@ -144,16 +161,19 @@ function TestSuiteAsXML(aSuite:TTestSuite): string;
 var
 var
   i: integer;
   i: integer;
 begin
 begin
-  Result := '<TestSuite name="' + ASuite.TestName + '">' + System.sLineBreak;
+  Result := trSpace(uLevel) + '<TestSuite name="' + ASuite.TestName + '">' + System.sLineBreak;
+  Inc(uLevel, 2);
   for i := 0 to aSuite.Tests.Count - 1 do
   for i := 0 to aSuite.Tests.Count - 1 do
     if TTest(aSuite.Tests.Items[i]) is TTestSuite then
     if TTest(aSuite.Tests.Items[i]) is TTestSuite then
       Result := Result + TestSuiteAsXML(TTestSuite(aSuite.Tests.Items[i]))
       Result := Result + TestSuiteAsXML(TTestSuite(aSuite.Tests.Items[i]))
     else
     else
       if TTest(aSuite.Tests.Items[i]) is TTestCase then
       if TTest(aSuite.Tests.Items[i]) is TTestCase then
-        Result := Result +'<test>' + TTestcase(aSuite.Tests.Items[i]).TestName + '</test>' + System.sLineBreak;
-  Result := Result + '</TestSuite>' + System.sLineBreak;
+        Result := Result + trSpace(uLevel) + '<test>' + TTestcase(aSuite.Tests.Items[i]).TestName + '</test>' + System.sLineBreak;
+  Dec(uLevel, 2);
+  Result := Result + trSpace(uLevel) + '</TestSuite>' + System.sLineBreak;
 end;
 end;
 
 
+
 function TestSuiteAsLatex(aSuite:TTestSuite): string;
 function TestSuiteAsLatex(aSuite:TTestSuite): string;
 var
 var
   i,j: integer;
   i,j: integer;
@@ -315,4 +335,8 @@ begin
   Result := Result + System.sLineBreak;
   Result := Result + System.sLineBreak;
 end;
 end;
 
 
+
+initialization
+  uLevel := 0;
+  
 end.
 end.