Skip to content

Commit

Permalink
NCover tests, belt and braces for the others
Browse files Browse the repository at this point in the history
  • Loading branch information
SteveGilham committed May 31, 2024
1 parent 370c1ab commit ce90f75
Show file tree
Hide file tree
Showing 13 changed files with 713 additions and 12 deletions.
7 changes: 5 additions & 2 deletions AltCover.Engine/Cobertura.fs
Original file line number Diff line number Diff line change
Expand Up @@ -113,15 +113,18 @@ module internal Cobertura =
let cname = m.Attribute("class".X).Value
let mname = m.Attribute("name".X).Value

let indexmname =
mname.Split('`') |> Seq.head

let classAt =
fn.IndexOf(cname, StringComparison.Ordinal)

let returnType = fn.Substring(0, classAt)

let methodAt =
fn.IndexOf(mname, classAt + cname.Length, StringComparison.Ordinal)
fn.IndexOf(indexmname, classAt + cname.Length, StringComparison.Ordinal)

let argsAt = methodAt + mname.Length
let argsAt = methodAt + indexmname.Length
let args = fn.Substring(argsAt)
let signature = returnType + args
(mname, signature)
Expand Down
7 changes: 6 additions & 1 deletion AltCover.Engine/Naming.fs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,12 @@ module internal Naming =
String.Empty

let return' =
I.fullTypeRefName def.ReturnType
let r = def.ReturnType

if r.ContainsGenericParameter then
r.FullName
else
I.fullTypeRefName r

String.Join(
String.Empty,
Expand Down
22 changes: 21 additions & 1 deletion AltCover.Engine/Report.fs
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,30 @@ module internal Report =
(methodDef: MethodDefinition)
included
=
let vtype = methodDef.DeclaringType

let vms =
vtype.Methods |> Seq.groupBy _.FullName

let methodName =
let full = methodDef.FullName

let group =
vms
|> Seq.find (fun (n, x) -> n.Equals(full, StringComparison.Ordinal))
|> snd
|> Seq.length

let tentative = methodDef.Name

match group with
| 1 -> tentative
| _ -> sprintf "%s`%d" tentative methodDef.GenericParameters.Count

let element =
XElement(
"method".X,
XAttribute("name".X, methodDef.Name),
XAttribute("name".X, methodName),
// /// Mono.Cecil emits names in the form outer/inner rather than outer+inner
XAttribute("class".X, Naming.fullTypeName methodDef.DeclaringType),
XAttribute("metadataToken".X, methodDef.MetadataToken.ToUInt32().ToString()),
Expand Down
4 changes: 4 additions & 0 deletions AltCover.Tests/AltCover.Tests.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,12 @@
<EmbeddedResource Include="issue122.xml" />
<EmbeddedResource Include="issue122.cobertura" />
<EmbeddedResource Include="Issue222.json" />
<EmbeddedResource Include="Issue222.json.lcov" />
<EmbeddedResource Include="Issue222.NCover.xml" />
<EmbeddedResource Include="Issue222.NCover.cobertura" />
<EmbeddedResource Include="Issue222.NCover.lcov" />
<EmbeddedResource Include="Issue222.OpenCover.xml" />
<EmbeddedResource Include="Issue222.OpenCover.cobertura" />
<EmbeddedResource Include="$(ProjectDir)../_Binaries/AltCover.Recorder/Release+AnyCPU/net20\/AltCover.Recorder.dll">
<Link>AltCover.Recorder.net20.dll</Link>
</EmbeddedResource>
Expand Down
10 changes: 10 additions & 0 deletions AltCover.Tests/Expecto.fs
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,12 @@ module ExpectoTestManifest =
"Runner.JsonShouldGeneratePlausibleLcov"
Tests.AltCoverRunnerTests.JsonWithPartialsShouldGeneratePlausibleLcov,
"Runner.JsonWithPartialsShouldGeneratePlausibleLcov"
Tests.AltCoverRunnerTests.JsonWithOverloadsShouldGeneratePlausibleLcov,
"Runner.JsonWithOverloadsShouldGeneratePlausibleLcov"
Tests.AltCoverRunnerTests.NCoverShouldGeneratePlausibleLcov,
"Runner.NCoverShouldGeneratePlausibleLcov"
Tests.AltCoverRunnerTests.NCoverWithOverloadsShouldGeneratePlausibleLcov,
"Runner.NCoverWithOverloadsShouldGeneratePlausibleLcov"
Tests.AltCoverRunnerTests.NCoverWithPartialsShouldGeneratePlausibleLcov,
"Runner.NCoverWithPartialsShouldGeneratePlausibleLcov"
Tests.AltCoverRunnerTests.NCoverShouldGenerateMorePlausibleLcov,
Expand All @@ -266,6 +270,8 @@ module ExpectoTestManifest =
"Runner.NCoverShouldGeneratePlausibleCobertura"
Tests.AltCoverRunnerTests.NCoverWithPartialsShouldGeneratePlausibleCobertura,
"Runner.NCoverWithPartialsShouldGeneratePlausibleCobertura"
Tests.AltCoverRunnerTests.NCoverWithOverloadsShouldGeneratePlausibleCobertura,
"Runner.NCoverWithOverloadsShouldGeneratePlausibleCobertura"
Tests.AltCoverRunnerTests.NCoverShouldGenerateMorePlausibleCobertura,
"Runner.NCoverShouldGenerateMorePlausibleCobertura"
Tests.AltCoverRunnerTests.DegenerateCasesShouldNotGenerateCobertura,
Expand All @@ -274,6 +280,8 @@ module ExpectoTestManifest =
"Runner.NCoverShouldGeneratePlausibleCoberturaWithMissingFullName"
Tests.AltCoverRunnerTests.OpenCoverShouldGeneratePlausibleCobertura,
"Runner.OpenCoverShouldGeneratePlausibleCobertura"
Tests.AltCoverRunnerTests.OpenCoverWithOverloadsShouldGeneratePlausibleCobertura,
"Runner.OpenCoverWithOverloadsShouldGeneratePlausibleCobertura"
Tests.AltCoverRunnerTests.OpenCoverWithPartialsShouldGeneratePlausibleCobertura,
"Runner.OpenCoverWithPartialsShouldGeneratePlausibleCobertura"
Tests.AltCoverRunnerTests.ThresholdViolationShouldBeReported,
Expand Down Expand Up @@ -426,6 +434,8 @@ module ExpectoTestManifest =
Tests.AltCoverTests.MethodNamesAreExtracted, "Tests.MethodNamesAreExtracted"
Tests.AltCoverTests.FullMethodNamesAreExtracted,
"Tests.FullMethodNamesAreExtracted"
Tests.AltCoverTests.ShouldGenerateExpectedNCoverReportWithOverloads,
"Tests.ShouldGenerateExpectedNCoverReportWithOverloads"
Tests.AltCoverTests.ShouldGenerateExpectedXmlReportFromDotNet,
"Tests.ShouldGenerateExpectedXmlReportFromDotNet"
Tests.AltCoverTests.ShouldGenerateExpectedXmlReportWithoutTriviaFromDotNet,
Expand Down
101 changes: 101 additions & 0 deletions AltCover.Tests/Issue222.NCover.cobertura
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<coverage line-rate="0" branch-rate="1" lines-covered="0" lines-valid="18" branches-covered="0" branches-valid="0" complexity="1" version="8.8.0.0" timestamp="xx">
<sources>
<source>C:/Users/email/Documents/Github/altcover/Samples/Sample32</source>
</sources>
<packages>
<package name="C:/Users/email/Documents/Github/altcover/_Binaries/sample32/Debug+AnyCPU/net8.0/Sample32.dll" line-rate="0" branch-rate="1" complexity="1">
<classes>
<class name="Sample32.Program" filename="C:/Users/email/Documents/Github/altcover/Samples/Sample32/Program.cs" line-rate="0" branch-rate="1" complexity="1">
<methods>
<method name="Main" signature="System.Void (System.String[])" line-rate="0" branch-rate="1" complexity="1">
<lines>
<line number="8" hits="0" branch="false" />
<line number="9" hits="0" branch="false" />
<line number="10" hits="0" branch="false" />
</lines>
</method>
</methods>
<lines>
<line number="8" hits="0" branch="false" />
<line number="9" hits="0" branch="false" />
<line number="10" hits="0" branch="false" />
</lines>
</class>
<class name="issue222.Class1" filename="C:/Users/email/Documents/Github/altcover/Samples/Sample32/Class1.cs" line-rate="0" branch-rate="1" complexity="1">
<methods>
<method name="AddSingleton`3" signature="System.Void &lt;T1,T2,T&gt;(issue222.IServiceCollection,System.Func`2)" line-rate="0" branch-rate="1" complexity="1">
<lines>
<line number="19" hits="0" branch="false" />
<line number="20" hits="0" branch="false" />
<line number="21" hits="0" branch="false" />
<line number="22" hits="0" branch="false" />
</lines>
</method>
<method name="AddSingleton`4" signature="System.Void &lt;T1,T2,T3,T&gt;(issue222.IServiceCollection,System.Func`2)" line-rate="0" branch-rate="1" complexity="1">
<lines>
<line number="26" hits="0" branch="false" />
<line number="27" hits="0" branch="false" />
<line number="28" hits="0" branch="false" />
<line number="29" hits="0" branch="false" />
<line number="30" hits="0" branch="false" />
</lines>
</method>
<method name="GetService" signature="T &lt;T&gt;(System.IServiceProvider)" line-rate="0" branch-rate="1" complexity="1">
<lines>
<line number="13" hits="0" branch="false" />
<line number="14" hits="0" branch="false" />
<line number="15" hits="0" branch="false" />
</lines>
</method>
</methods>
<lines>
<line number="13" hits="0" branch="false" />
<line number="14" hits="0" branch="false" />
<line number="15" hits="0" branch="false" />
<line number="19" hits="0" branch="false" />
<line number="20" hits="0" branch="false" />
<line number="21" hits="0" branch="false" />
<line number="22" hits="0" branch="false" />
<line number="26" hits="0" branch="false" />
<line number="27" hits="0" branch="false" />
<line number="28" hits="0" branch="false" />
<line number="29" hits="0" branch="false" />
<line number="30" hits="0" branch="false" />
</lines>
</class>
<class name="issue222.Class1+&lt;&gt;c__1`3" filename="C:/Users/email/Documents/Github/altcover/Samples/Sample32/Class1.cs" line-rate="0" branch-rate="1" complexity="1">
<methods>
<method name="&lt;AddSingleton&gt;b__1_0" signature="T (System.IServiceProvider)" line-rate="0" branch-rate="1" complexity="1">
<lines>
<line number="21" hits="0" branch="false" />
</lines>
</method>
</methods>
<lines>
<line number="21" hits="0" branch="false" />
</lines>
</class>
<class name="issue222.Class1+&lt;&gt;c__2`4" filename="C:/Users/email/Documents/Github/altcover/Samples/Sample32/Class1.cs" line-rate="0" branch-rate="1" complexity="1">
<methods>
<method name="&lt;AddSingleton&gt;b__2_0" signature="T (System.IServiceProvider)" line-rate="0" branch-rate="1" complexity="1">
<lines>
<line number="28" hits="0" branch="false" />
</lines>
</method>
<method name="&lt;AddSingleton&gt;b__2_1" signature="T (System.IServiceProvider)" line-rate="0" branch-rate="1" complexity="1">
<lines>
<line number="29" hits="0" branch="false" />
</lines>
</method>
</methods>
<lines>
<line number="28" hits="0" branch="false" />
<line number="29" hits="0" branch="false" />
</lines>
</class>
</classes>
</package>
</packages>
</coverage>
47 changes: 47 additions & 0 deletions AltCover.Tests/Issue222.NCover.lcov
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
TN: Sample32, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SF:C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs
FN:13,T issue222.Class1.GetService<T>(System.IServiceProvider)
FN:19,System.Void issue222.Class1.AddSingleton<T1,T2,T>(issue222.IServiceCollection,System.Func`2)
FN:21,T issue222.Class1+<>c__1`3.<AddSingleton>b__1_0(System.IServiceProvider)
FN:26,System.Void issue222.Class1.AddSingleton<T1,T2,T3,T>(issue222.IServiceCollection,System.Func`2)
FN:28,T issue222.Class1+<>c__2`4.<AddSingleton>b__2_0(System.IServiceProvider)
FN:29,T issue222.Class1+<>c__2`4.<AddSingleton>b__2_1(System.IServiceProvider)
FNDA:0,T issue222.Class1.GetService<T>(System.IServiceProvider)
FNDA:0,System.Void issue222.Class1.AddSingleton<T1,T2,T>(issue222.IServiceCollection,System.Func`2)
FNDA:0,T issue222.Class1+<>c__1`3.<AddSingleton>b__1_0(System.IServiceProvider)
FNDA:0,System.Void issue222.Class1.AddSingleton<T1,T2,T3,T>(issue222.IServiceCollection,System.Func`2)
FNDA:0,T issue222.Class1+<>c__2`4.<AddSingleton>b__2_0(System.IServiceProvider)
FNDA:0,T issue222.Class1+<>c__2`4.<AddSingleton>b__2_1(System.IServiceProvider)
FNF:6
FNH:0
BRF:0
BRH:0
DA:13,0
DA:14,0
DA:15,0
DA:19,0
DA:20,0
DA:21,0
DA:22,0
DA:26,0
DA:27,0
DA:28,0
DA:29,0
DA:30,0
LH:0
LF:12
end_of_record
TN: Sample32, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
SF:C:\Users\email\Documents\Github\altcover\Samples\Sample32\Program.cs
FN:8,System.Void Sample32.Program.Main(System.String[])
FNDA:0,System.Void Sample32.Program.Main(System.String[])
FNF:1
FNH:0
BRF:0
BRH:0
DA:8,0
DA:9,0
DA:10,0
LH:0
LF:3
end_of_record
14 changes: 7 additions & 7 deletions AltCover.Tests/Issue222.NCover.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="coverage.xsl" ?>
<coverage profilerVersion="AltCover 8.8.61.33432" driverVersion="0" startTime="9999-12-31T23:59:59.9999999" measureTime="0001-01-01T00:00:00.0000000">
<module moduleId="2c758bcc-6e56-459a-b5ee-2880b5d9ae46" name="C:\Users\email\Documents\Github\altcover\_Binaries\sample32\Debug+AnyCPU\net8.0\Sample32.dll" assembly="Sample32" assemblyIdentity="Sample32, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" excluded="false">
<coverage profilerVersion="AltCover 8.8.68.14092" driverVersion="0" startTime="9999-12-31T23:59:59.9999999" measureTime="0001-01-01T00:00:00.0000000">
<module moduleId="022ee631-200a-4ec4-890a-b810c827cc4d" name="C:\Users\email\Documents\Github\altcover\_Binaries\sample32\Debug+AnyCPU\net8.0\Sample32.dll" assembly="Sample32" assemblyIdentity="Sample32, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" excluded="false">
<method name="Main" class="Sample32.Program" metadataToken="100663297" excluded="false" instrumented="true" fullname="System.Void Sample32.Program.Main(System.String[])">
<seqpnt visitcount="0" line="8" column="5" endline="8" endcolumn="6" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Program.cs" />
<seqpnt visitcount="0" line="9" column="7" endline="9" endcolumn="42" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Program.cs" />
Expand All @@ -12,26 +12,26 @@
<seqpnt visitcount="0" line="14" column="7" endline="14" endcolumn="25" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
<seqpnt visitcount="0" line="15" column="5" endline="15" endcolumn="6" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
</method>
<method name="AddSingleton" class="issue222.Class1" metadataToken="100663301" excluded="false" instrumented="true" fullname="System.Void issue222.Class1.AddSingleton&lt;T1,T2,T&gt;(issue222.IServiceCollection,System.Func`2)">
<method name="AddSingleton`3" class="issue222.Class1" metadataToken="100663301" excluded="false" instrumented="true" fullname="System.Void issue222.Class1.AddSingleton&lt;T1,T2,T&gt;(issue222.IServiceCollection,System.Func`2)">
<seqpnt visitcount="0" line="19" column="5" endline="19" endcolumn="6" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
<seqpnt visitcount="0" line="20" column="7" endline="20" endcolumn="59" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
<seqpnt visitcount="0" line="21" column="7" endline="21" endcolumn="64" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
<seqpnt visitcount="0" line="22" column="5" endline="22" endcolumn="6" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
</method>
<method name="AddSingleton" class="issue222.Class1" metadataToken="100663302" excluded="false" instrumented="true" fullname="System.Void issue222.Class1.AddSingleton&lt;T1,T2,T3,T&gt;(issue222.IServiceCollection,System.Func`2)">
<method name="AddSingleton`4" class="issue222.Class1" metadataToken="100663302" excluded="false" instrumented="true" fullname="System.Void issue222.Class1.AddSingleton&lt;T1,T2,T3,T&gt;(issue222.IServiceCollection,System.Func`2)">
<seqpnt visitcount="0" line="26" column="5" endline="26" endcolumn="6" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
<seqpnt visitcount="0" line="27" column="7" endline="27" endcolumn="59" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
<seqpnt visitcount="0" line="28" column="7" endline="28" endcolumn="64" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
<seqpnt visitcount="0" line="29" column="7" endline="29" endcolumn="64" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
<seqpnt visitcount="0" line="30" column="5" endline="30" endcolumn="6" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
</method>
<method name="&lt;AddSingleton&gt;b__1_0" class="issue222.Class1+&lt;&gt;c__1`3" metadataToken="100663305" excluded="false" instrumented="true" fullname="issue222.Class1+&lt;&gt;c__1`3+T issue222.Class1+&lt;&gt;c__1`3.&lt;AddSingleton&gt;b__1_0(System.IServiceProvider)">
<method name="&lt;AddSingleton&gt;b__1_0" class="issue222.Class1+&lt;&gt;c__1`3" metadataToken="100663305" excluded="false" instrumented="true" fullname="T issue222.Class1+&lt;&gt;c__1`3.&lt;AddSingleton&gt;b__1_0(System.IServiceProvider)">
<seqpnt visitcount="0" line="21" column="41" endline="21" endcolumn="62" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
</method>
<method name="&lt;AddSingleton&gt;b__2_0" class="issue222.Class1+&lt;&gt;c__2`4" metadataToken="100663308" excluded="false" instrumented="true" fullname="issue222.Class1+&lt;&gt;c__2`4+T issue222.Class1+&lt;&gt;c__2`4.&lt;AddSingleton&gt;b__2_0(System.IServiceProvider)">
<method name="&lt;AddSingleton&gt;b__2_0" class="issue222.Class1+&lt;&gt;c__2`4" metadataToken="100663308" excluded="false" instrumented="true" fullname="T issue222.Class1+&lt;&gt;c__2`4.&lt;AddSingleton&gt;b__2_0(System.IServiceProvider)">
<seqpnt visitcount="0" line="28" column="41" endline="28" endcolumn="62" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
</method>
<method name="&lt;AddSingleton&gt;b__2_1" class="issue222.Class1+&lt;&gt;c__2`4" metadataToken="100663309" excluded="false" instrumented="true" fullname="issue222.Class1+&lt;&gt;c__2`4+T issue222.Class1+&lt;&gt;c__2`4.&lt;AddSingleton&gt;b__2_1(System.IServiceProvider)">
<method name="&lt;AddSingleton&gt;b__2_1" class="issue222.Class1+&lt;&gt;c__2`4" metadataToken="100663309" excluded="false" instrumented="true" fullname="T issue222.Class1+&lt;&gt;c__2`4.&lt;AddSingleton&gt;b__2_1(System.IServiceProvider)">
<seqpnt visitcount="0" line="29" column="41" endline="29" endcolumn="62" excluded="false" document="C:\Users\email\Documents\Github\altcover\Samples\Sample32\Class1.cs" />
</method>
</module>
Expand Down
Loading

0 comments on commit ce90f75

Please sign in to comment.