From 0604e4765578bd40c17baeae333782f9929f0181 Mon Sep 17 00:00:00 2001 From: Eric Grange Date: Thu, 10 Feb 2022 16:12:16 +0100 Subject: [PATCH] Source code coverage navigation Added small buttons to interactively navigate between non-covered blocks of code --- Source/HTMLCoverageReport.pas | 53 ++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/Source/HTMLCoverageReport.pas b/Source/HTMLCoverageReport.pas index ef23c8d..57acec6 100644 --- a/Source/HTMLCoverageReport.pas +++ b/Source/HTMLCoverageReport.pas @@ -367,7 +367,13 @@ procedure THTMLCoverageReport.AddPreAmble(const AOutFile: TTextWriter); AOutFile.WriteLine('table.sum tr th {text-align:left; border: 1px solid #888}'); AOutFile.WriteLine('table.sum tr td {text-align:right;}'); AOutFile.WriteLine('table.sum tr td:first-child {text-align:left;}'); - AOutFile.WriteLine(EndTag('style')); + + AOutFile.WriteLine('#nav {position: fixed; margin-left: -3.5em; overflow: visible;}'); + AOutFile.WriteLine('#nav div {opacity: .3; user-select: none; pointer-events: none;}'); + AOutFile.WriteLine('#nav div.active {opacity: 1; cursor: pointer; pointer-events: initial;}'); + AOutFile.WriteLine('#nav div.active:hover {color: #00A;}'); + + AOutFile.WriteLine(EndTag('style')); end; AOutFile.WriteLine(EndTag('head')); AOutFile.WriteLine(StartTag('body')); @@ -560,6 +566,8 @@ procedure THTMLCoverageReport.GenerateCoverageTable( LineCoverageIter := 0; LineCount := 1; + AOutputFile.WriteLine(''); + AOutputFile.WriteLine(StartTag('table', SourceClass)); while AInputFile.Peek <> -1 do begin @@ -581,6 +589,49 @@ procedure THTMLCoverageReport.GenerateCoverageTable( Inc(LineCount); end; AOutputFile.WriteLine(EndTag('table')); + + AOutputFile.WriteLine( + '' + ); end; end.