From 73418e98605c7f958de6d23418bde4ac60001d69 Mon Sep 17 00:00:00 2001 From: Guilherme Alecrim Date: Mon, 25 May 2026 17:24:16 -0300 Subject: [PATCH] fix compilation for Delphi XE6 --- Source/HTMLCoverageReport.pas | 68 ++++++++++++++++++------------ Test/CoverageConfigurationTest.pas | 8 ++-- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/Source/HTMLCoverageReport.pas b/Source/HTMLCoverageReport.pas index 36298a3..c54fc65 100644 --- a/Source/HTMLCoverageReport.pas +++ b/Source/HTMLCoverageReport.pas @@ -72,6 +72,7 @@ THTMLCoverageReport = class(TInterfacedObject, IReport) function PrettyPercentage(nbItems, nbTotal : Integer) : String; + function HtmlEncode(const AStr: string) : String; public constructor Create(const ACoverageConfiguration: ICoverageConfiguration); @@ -90,9 +91,24 @@ implementation uses System.SysUtils, + {$IF CompilerVersion >= 28.0} System.NetEncoding, + {$ENDIF} JclFileUtils; +function THTMLCoverageReport.HtmlEncode(const AStr: string) : String; +begin + {$IF CompilerVersion >= 28.0} + Result := TNetEncoding.HTML.Encode(AStr); + {$ELSE} + Result := StringReplace(AStr, '&', '&', [rfReplaceAll]); + Result := StringReplace(Result, '<', '<', [rfReplaceAll]); + Result := StringReplace(Result, '>', '>', [rfReplaceAll]); + Result := StringReplace(Result, '"', '"', [rfReplaceAll]); + Result := StringReplace(Result, '''', ''', [rfReplaceAll]); + {$ENDIF} +end; + procedure THTMLCoverageReport.Generate( const ACoverage: ICoverageStats; const AModuleInfoList: TModuleList; @@ -472,7 +488,7 @@ procedure THTMLCoverageReport.AddTableFooter( AOutputFile.WriteLine( '' + '' - + '' + TNetEncoding.HTML.Encode(AHeading) + + '' + HtmlEncode(AHeading) + '' + IntToStr(coveredLineCount) + '' + IntToStr(lineCount - coveredLineCount) + '' + IntToStr(lineCount) @@ -487,11 +503,11 @@ procedure THTMLCoverageReport.AddTableHeader( const AOutputFile: TTextWriter); begin AOutputFile.WriteLine( - '

' + TNetEncoding.HTML.Encode(ATableHeading) + '

' + '

' + HtmlEncode(ATableHeading) + '

' + '' + '' + '' - + '' @@ -607,7 +623,7 @@ procedure THTMLCoverageReport.GenerateCoverageTable( while AInputFile.Peek <> -1 do begin InputLine := AInputFile.ReadLine; - InputLine := TNetEncoding.HTML.Encode(TrimRight(InputLine)); + InputLine := HtmlEncode(TrimRight(InputLine)); LineCoverage := ACoverageModule.CoverageLine[LineCoverageIter]; if (LineCount = LineCoverage.LineNumber) then begin @@ -628,7 +644,7 @@ procedure THTMLCoverageReport.GenerateCoverageTable( AOutputFile.WriteLine( '' ); diff --git a/Test/CoverageConfigurationTest.pas b/Test/CoverageConfigurationTest.pas index 1a0a3f3..6b92a0c 100644 --- a/Test/CoverageConfigurationTest.pas +++ b/Test/CoverageConfigurationTest.pas @@ -1518,13 +1518,13 @@ procedure TCoverageConfigurationTest.TestMixIncludeExcludeSourceMask; LCmdParams : array of string; LCoverageConfiguration : ICoverageConfiguration; I : Integer; + LINCLUDE_EXCLUDE_FILES_PREFIX: string; begin - const cINCLUDE_EXCLUDE_FILES_PREFIX = cINCLUDE_FILES_PREFIX + cEXCLUDE_FILES_PREFIX; - + LINCLUDE_EXCLUDE_FILES_PREFIX := cINCLUDE_FILES_PREFIX + cEXCLUDE_FILES_PREFIX; LNumOfFiles := Random(20) + 10; SetLength(LCmdParams, LNumOfFiles + 5); LCmdParams[0] := '-esm'; - LCmdParams[1] := cINCLUDE_EXCLUDE_FILES_PREFIX + '*'; + LCmdParams[1] := LINCLUDE_EXCLUDE_FILES_PREFIX + '*'; LCmdParams[2] := '-ism'; LCmdParams[3] := cINCLUDE_FILES_PREFIX + '*'; LCmdParams[4] := '-u'; @@ -1549,7 +1549,7 @@ procedure TCoverageConfigurationTest.TestMixIncludeExcludeSourceMask; LCoverageConfiguration.ParseCommandLine; for I := 0 to Pred(LTotalUnitList.Count) do if ((LeftStr(LTotalUnitList[I], Length(cINCLUDE_FILES_PREFIX)) = cINCLUDE_FILES_PREFIX) - and not (LeftStr(LTotalUnitList[I], Length(cINCLUDE_EXCLUDE_FILES_PREFIX)) = cINCLUDE_EXCLUDE_FILES_PREFIX)) then + and not (LeftStr(LTotalUnitList[I], Length(LINCLUDE_EXCLUDE_FILES_PREFIX)) = LINCLUDE_EXCLUDE_FILES_PREFIX)) then CheckNotEquals(-1, LCoverageConfiguration.Units.IndexOf(LTotalUnitList[I]), 'Missing included unit') else CheckEquals(-1, LCoverageConfiguration.Units.IndexOf(LTotalUnitList[I]), 'Unit should have been excluded');
' + TNetEncoding.HTML.Encode(AColumnHeading) + + '' + HtmlEncode(AColumnHeading) + 'Number of lines' + 'Percent(s) covered' + '