Skip to content

Commit

Permalink
Testing and fixing
Browse files Browse the repository at this point in the history
  • Loading branch information
SteveGilham committed Oct 15, 2022
1 parent d575dff commit ad23ba1
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 7 deletions.
20 changes: 13 additions & 7 deletions AltCover.Engine/Visitor.fs
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,7 @@ module internal CoverageParameters =
String.Empty ]

configurationHash <-
String.Join("\n", components)
String.Join("\n", components).TrimEnd()
|> System.Text.Encoding.ASCII.GetBytes
|> hash.ComputeHash
|> Convert.ToBase64String
Expand Down Expand Up @@ -1444,24 +1444,30 @@ module internal Visitor =
OpCodes.Br
OpCodes.Br_S
OpCodes.Leave
OpCodes.Leave_S ]
OpCodes.Leave_S
OpCodes.Nop ]
)

let internal isNonTrivialSeqPnt (dbg: MethodDebugInformation) (x: Instruction) =
if CoverageParameters.trivia.Value then
let rest =
Seq.unfold
(fun (i: Instruction) ->
if i |> dbg.GetSequencePoint |> isNull then
if
i |> isNull
|| i |> dbg.GetSequencePoint |> isNull |> not
then
None
else
Some(i, i))
Some(i, i.Next))
x.Next

x :: (rest |> Seq.toList)
|> List.forall (fun v -> trivial.Contains v.OpCode)
|> not
let nt =
x :: (rest |> Seq.toList)
|> List.filter (fun v -> v.OpCode |> trivial.Contains |> not)
|> List.tryHead

Option.isSome nt
else
true

Expand Down
2 changes: 2 additions & 0 deletions AltCover.Tests/Expecto.fs
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,8 @@ module ExpectoTestManifest =
"Tests.FullMethodNamesAreExtracted"
Tests.AltCoverTests.ShouldGenerateExpectedXmlReportFromDotNet,
"Tests.ShouldGenerateExpectedXmlReportFromDotNet"
Tests.AltCoverTests.ShouldGenerateExpectedXmlReportWithoutTriviaFromDotNet,
"Tests.ShouldGenerateExpectedXmlReportWithoutTriviaFromDotNet"
Tests.AltCoverTests.ShouldGenerateExpectedXmlReportWithEmbeds,
"Tests.ShouldGenerateExpectedXmlReportFromWithEmbeds"
Tests.AltCoverTests.ShouldGenerateExpectedXmlReportWithPartials,
Expand Down
68 changes: 68 additions & 0 deletions AltCover.Tests/Tests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -3347,6 +3347,20 @@ module AltCoverTests =
<seqpnt visitcount=\"1\" line=\"21\" column=\"3\" endline=\"21\" endcolumn=\"4\" excluded=\"true\" document=\"Sample1\\Program.cs\" />
</method>
</module>
</coverage>"

let TriviaBaseline =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>
<?xml-stylesheet href=\"coverage.xsl\" type=\"text/xsl\"?>
<coverage profilerVersion=\"0\" driverVersion=\"0\" startTime=\"\" measureTime=\"\">
<module moduleId=\"\" name=\"Sample1.exe\" assembly=\"Sample1\" assemblyIdentity=\"Sample1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\">
<method name=\"Main\" class=\"TouchTest.Program\" metadataToken=\"0\" excluded=\"true\" instrumented=\"false\" >
<seqpnt visitcount=\"1\" line=\"12\" column=\"4\" endline=\"12\" endcolumn=\"27\" excluded=\"true\" document=\"Sample1\\Program.cs\" />
<seqpnt visitcount=\"1\" line=\"13\" column=\"4\" endline=\"13\" endcolumn=\"24\" excluded=\"true\" document=\"Sample1\\Program.cs\" />
<seqpnt visitcount=\"1\" line=\"15\" column=\"5\" endline=\"15\" endcolumn=\"77\" excluded=\"true\" document=\"Sample1\\Program.cs\" />
<seqpnt visitcount=\"0\" line=\"19\" column=\"5\" endline=\"19\" endcolumn=\"50\" excluded=\"true\" document=\"Sample1\\Program.cs\" />
</method>
</module>
</coverage>"

let rec private recursiveValidate result expected depth zero =
Expand Down Expand Up @@ -3441,6 +3455,60 @@ module AltCoverTests =
finally
CoverageParameters.nameFilters.Clear()

[<Test>]
let ShouldGenerateExpectedXmlReportWithoutTriviaFromDotNet () =
let visitor, document =
Report.reportGenerator ()

let path = sample1path

try
"Main"
|> (Regex
>> FilterRegex.Exclude
>> FilterClass.Build FilterScope.Method
>> CoverageParameters.nameFilters.Add)

CoverageParameters.trivia.Value <- true

Visitor.visit
[ visitor ]
(Visitor.I.toSeq
{ AssemblyPath = path
Identity = Hallmark.Build()
Destinations = [] })

use def = AssemblyResolver.ReadAssembly path

let xml = TriviaBaseline

let xml' =
xml.Replace("Version=1.0.0.0", "Version=" + def.Name.Version.ToString())

let xml'' =
xml'.Replace("name=\"Sample1.exe\"", "name=\"" + path + "\"")

let baseline =
XDocument.Load(new System.IO.StringReader(xml''))

let result =
(makeDocument document).Elements()

let expected = baseline.Elements()
recursiveValidate result expected 0 true

CoverageParameters.makeConfiguration ()

test
<@
CoverageParameters.configurationHash = Some
"2QsURwpbBG6MQhnmFGfWowB0iwhnatSDEy5d7h6d6X0="
@>
finally
CoverageParameters.nameFilters.Clear()
CoverageParameters.trivia.Value <- false
CoverageParameters.configurationHash <- None

[<Test>]
let ShouldGenerateExpectedXmlReportWithEmbeds () =
let visitor, document =
Expand Down

0 comments on commit ad23ba1

Please sign in to comment.