Skip to content
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ bld/
[Bb]in/
[Oo]bj/
[Ll]og/
msbuild.binlog
*.binlog

# Visual Studio 2015 cache/options directory
.vs/
Expand Down Expand Up @@ -306,3 +306,4 @@ test/coverlet.integration.determisticbuild/*.txt
test/coverlet.integration.determisticbuild/runsettings

coverage.cobertura.xml
coverage.opencover.xml
11 changes: 11 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,15 @@
<VSTestLogger>@(VSTestLogger)</VSTestLogger>
</PropertyGroup>

<PropertyGroup>
<!--
Do not change versions since we need to support VSTest DataCollectors. We need to load assembly version 1.6.0 to properly work
We can check minimum supported package version here https://github.com/Microsoft/vstest/blob/master/src/Microsoft.TestPlatform.ObjectModel/Microsoft.TestPlatform.ObjectModel.csproj#L34
-->
<!-- VSTest dependency versions -->
<!-- https://github.com/microsoft/vstest/blob/fde8bf79d3f0f80e3548f873a56ffb4100c0ae49/eng/Versions.props -->
<SystemReflectionMetadataVersion>1.6.0</SystemReflectionMetadataVersion>
<SystemCollectionsImmutableVersion>1.5.0</SystemCollectionsImmutableVersion>
</PropertyGroup>

</Project>
10 changes: 5 additions & 5 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@
vstest 17.8 version
NuGetFrameworksVersion is defined here https://github.com/microsoft/vstest/blob/9a0c41811637edf4afe0e265e08fdd1cb18109ed/eng/Versions.props#L94C1-L94C1
-->
<PackageVersion Include="NuGet.Frameworks" Version="5.11.5" />
<PackageVersion Include="NuGet.Frameworks" Version="6.5.0" />
<PackageVersion Include="NuGet.Packaging" Version="6.5.0" />
<PackageVersion Include="Mono.Cecil" Version="0.11.5" />
<PackageVersion Include="Moq" Version="4.18.4" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
<PackageVersion Include="NuGet.Packaging" Version="6.6.1" />
<PackageVersion Include="ReportGenerator.Core" Version="5.1.23" />
<!--For test issue 809 https://github.com/coverlet-coverage/coverlet/issues/809-->
<PackageVersion Include="LinqKit.Microsoft.EntityFrameworkCore" Version="7.1.4" />
Expand All @@ -55,10 +55,10 @@
System.NotSupportedException : Application is running as testhost, unable to determine parent 'dotnet' process.
-->
<PackageVersion Include="Tmds.ExecFunction" Version="0.6.0" />
<PackageVersion Include="xunit" Version="2.5.0" />
<PackageVersion Include="xunit" Version="2.5.3" />
<PackageVersion Include="xunit.assemblyfixture" Version="2.2.0" />
<PackageVersion Include="xunit.assert" Version="2.5.0" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.0"/>
<PackageVersion Include="xunit.assert" Version="2.5.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.3"/>
<PackageVersion Include="envdte" Version="17.7.37355" />
</ItemGroup>
</Project>
4 changes: 2 additions & 2 deletions eng/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ steps:
- script: dotnet restore
displayName: Restore packages

- script: dotnet build -c $(BuildConfiguration) --no-restore
- script: dotnet build -c $(BuildConfiguration) --no-restore -bl:build.binlog
displayName: Build

- script: dotnet pack -c $(BuildConfiguration) --no-restore
- script: dotnet pack -c $(BuildConfiguration) --no-restore -bl:test.binlog
displayName: Pack

- task: DotNetCoreCLI@2
Expand Down
9 changes: 8 additions & 1 deletion eng/publish-coverlet-result-files.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ steps:
Contents: |
**/*.trx
**/*.html
**/*.binlog
**/coverage.opencover.xml
**/coverage.cobertura.xml
**/coverage.json
Expand All @@ -25,6 +24,14 @@ steps:
Contents: '**/*.trx'
TargetFolder: '$(Build.SourcesDirectory)/artifacts/TestLogs'

- task: CopyFiles@2
displayName: Copy binlog files
condition: always()
inputs:
SourceFolder: '$(Build.SourcesDirectory)'
Contents: '**/*.binlog'
TargetFolder: '$(Build.SourcesDirectory)/artifacts/TestLogs'

- task: PublishPipelineArtifact@1
displayName: Publish Coverlet logs
continueOnError: true
Expand Down
1 change: 1 addition & 0 deletions src/coverlet.collector/coverlet.collector.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);PackBuildOutputs</TargetsForTfmSpecificContentInPackage>
<!-- Open issue https://github.com/NuGet/Home/issues/8941 -->
<NoWarn>$(NoWarn);NU5127</NoWarn>
<CentralPackageTransitivePinningEnabled>false</CentralPackageTransitivePinningEnabled>
</PropertyGroup>

<!-- Nuget package properties https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets -->
Expand Down
4 changes: 2 additions & 2 deletions src/coverlet.core/coverlet.core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
<PackageReference Include="Mono.Cecil" />
<PackageReference Include="System.Collections.Immutable" />
<PackageReference Include="System.Reflection.Metadata" />
<PackageReference Include="System.Reflection.Metadata" VersionOverride="$(SystemReflectionMetadataVersion)" />
<PackageReference Include="System.Collections.Immutable" VersionOverride="$(SystemCollectionsImmutableVersion)"/>
<PackageReference Include="System.Text.Json" />
</ItemGroup>

Expand Down
1 change: 1 addition & 0 deletions src/coverlet.msbuild.tasks/coverlet.msbuild.tasks.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
If you are packing with NuGet's MSBuild Pack target, you can set <SuppressDependenciesWhenPacking>true</SuppressDependenciesWhenPacking> in any PropertyGroup in your project file.
-->
<SuppressDependenciesWhenPacking>true</SuppressDependenciesWhenPacking>
<CentralPackageTransitivePinningEnabled>false</CentralPackageTransitivePinningEnabled>
</PropertyGroup>

<!-- Nuget package properties https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets -->
Expand Down
10 changes: 5 additions & 5 deletions test/coverlet.core.tests/Coverage/CoverageSummaryTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ private void SetupDataMultipleModule()
var methods = new Methods();
string[] methodString = {
"System.Void Coverlet.Core.Tests.CoverageSummaryTests::TestCalculateSummary()", // covered
"System.Void Coverlet.Core.Tests.CoverageSummaryTests::TestAditionalCalculateSummary()" // not covered
"System.Void Coverlet.Core.Tests.CoverageSummaryTests::TestAdditionalCalculateSummary()" // not covered
};
methods.Add(methodString[0], new Method());
methods[methodString[0]].Lines = lines;
Expand All @@ -119,7 +119,7 @@ private void SetupDataMultipleModule()
_averageCalculationMultiModule = new Modules
{
{ "module", _averageCalculationSingleModule["module"] },
{ "aditionalModule", documents }
{ "additionalModule", documents }
};
}

Expand Down Expand Up @@ -159,7 +159,7 @@ public void TestCalculateLineCoverage_MultiModule()
{
var summary = new CoverageSummary();
Documents documentsFirstModule = _averageCalculationMultiModule["module"];
Documents documentsSecondModule = _averageCalculationMultiModule["aditionalModule"];
Documents documentsSecondModule = _averageCalculationMultiModule["additionalModule"];

Assert.Equal(37.5, summary.CalculateLineCoverage(_averageCalculationMultiModule).AverageModulePercent);
Assert.Equal(50, summary.CalculateLineCoverage(documentsFirstModule.First().Value).Percent);
Expand Down Expand Up @@ -191,7 +191,7 @@ public void TestCalculateBranchCoverage_MultiModule()
{
var summary = new CoverageSummary();
Documents documentsFirstModule = _averageCalculationMultiModule["module"];
Documents documentsSecondModule = _averageCalculationMultiModule["aditionalModule"];
Documents documentsSecondModule = _averageCalculationMultiModule["additionalModule"];

Assert.Equal(83.33, summary.CalculateBranchCoverage(_averageCalculationMultiModule).AverageModulePercent);
Assert.Equal(100, summary.CalculateBranchCoverage(documentsFirstModule.First().Value).Percent);
Expand Down Expand Up @@ -220,7 +220,7 @@ public void TestCalculateMethodCoverage_MultiModule()
{
var summary = new CoverageSummary();
Documents documentsFirstModule = _averageCalculationMultiModule["module"];
Documents documentsSecondModule = _averageCalculationMultiModule["aditionalModule"];
Documents documentsSecondModule = _averageCalculationMultiModule["additionalModule"];

Assert.Equal(75, summary.CalculateMethodCoverage(_averageCalculationMultiModule).AverageModulePercent);
Assert.Equal(100, summary.CalculateMethodCoverage(documentsFirstModule.First().Value).Percent);
Expand Down
40 changes: 17 additions & 23 deletions test/coverlet.core.tests/Coverage/CoverageTests.AsyncAwait.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,17 @@ public void AsyncAwait()
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncAwait>(instance =>
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncAwait>(async instance =>
{
instance.SyncExecution();

int res = ((Task<int>)instance.AsyncExecution(true)).ConfigureAwait(false).GetAwaiter().GetResult();
res = ((Task<int>)instance.AsyncExecution(1)).ConfigureAwait(false).GetAwaiter().GetResult();
res = ((Task<int>)instance.AsyncExecution(2)).ConfigureAwait(false).GetAwaiter().GetResult();
res = ((Task<int>)instance.AsyncExecution(3)).ConfigureAwait(false).GetAwaiter().GetResult();
res = ((Task<int>)instance.ContinuationCalled()).ConfigureAwait(false).GetAwaiter().GetResult();
res = ((Task<int>)instance.ConfigureAwait()).ConfigureAwait(false).GetAwaiter().GetResult();
int res = await (Task<int>)instance.AsyncExecution(true);
res = await (Task<int>)instance.AsyncExecution(1);
res = await (Task<int>)instance.AsyncExecution(2);
res = await (Task<int>)instance.AsyncExecution(3);
res = await (Task<int>)instance.ContinuationCalled();
res = await (Task<int>)instance.ConfigureAwait();

return Task.CompletedTask;
}, persistPrepareResultToFile: pathSerialize[0]);
return 0;
}, new string[] { path });
Expand Down Expand Up @@ -77,10 +76,9 @@ public void AsyncAwait_Issue_669_1()
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_669_1>(instance =>
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_669_1>(async instance =>
{
((Task)instance.Test()).ConfigureAwait(false).GetAwaiter().GetResult();
return Task.CompletedTask;
await (Task)instance.Test();
},
persistPrepareResultToFile: pathSerialize[0]);

Expand Down Expand Up @@ -108,10 +106,9 @@ public void AsyncAwait_Issue_669_2()
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_669_2>(instance =>
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_669_2>(async instance =>
{
((ValueTask<System.Net.Http.HttpResponseMessage>)instance.SendRequest()).ConfigureAwait(false).GetAwaiter().GetResult();
return Task.CompletedTask;
await (ValueTask<System.Net.Http.HttpResponseMessage>)instance.SendRequest();
},
persistPrepareResultToFile: pathSerialize[0],
assemblyLocation: Assembly.GetExecutingAssembly().Location);
Expand All @@ -138,10 +135,9 @@ public void AsyncAwait_Issue_1177()
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1177>(instance =>
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1177>(async instance =>
{
((Task)instance.Test()).ConfigureAwait(false).GetAwaiter().GetResult();
return Task.CompletedTask;
await (Task)instance.Test();
},
persistPrepareResultToFile: pathSerialize[0]);

Expand All @@ -166,10 +162,9 @@ public void AsyncAwait_Issue_1233()
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1233>(instance =>
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1233>(async instance =>
{
((Task)instance.Test()).ConfigureAwait(false).GetAwaiter().GetResult();
return Task.CompletedTask;
await (Task)instance.Test();
},
persistPrepareResultToFile: pathSerialize[0]);

Expand All @@ -194,11 +189,10 @@ public void AsyncAwait_Issue_1275()
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1275>(instance =>
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1275>(async instance =>
{
var cts = new CancellationTokenSource();
((Task)instance.Execute(cts.Token)).ConfigureAwait(false).GetAwaiter().GetResult();
return Task.CompletedTask;
await (Task)instance.Execute(cts.Token);
},
persistPrepareResultToFile: pathSerialize[0]);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ public void AsyncAwaitWithValueTask()
{
instance.SyncExecution();

int res = await ((ValueTask<int>)instance.AsyncExecution(true)).ConfigureAwait(false);
res = await ((ValueTask<int>)instance.AsyncExecution(1)).ConfigureAwait(false);
res = await ((ValueTask<int>)instance.AsyncExecution(2)).ConfigureAwait(false);
res = await ((ValueTask<int>)instance.AsyncExecution(3)).ConfigureAwait(false);
res = await ((ValueTask<int>)instance.ConfigureAwait()).ConfigureAwait(false);
res = ((Task<int>)instance.WrappingValueTaskAsTask()).ConfigureAwait(false).GetAwaiter().GetResult();
int res = await (ValueTask<int>)instance.AsyncExecution(true);
res = await (ValueTask<int>)instance.AsyncExecution(1);
res = await (ValueTask<int>)instance.AsyncExecution(2);
res = await (ValueTask<int>)instance.AsyncExecution(3);
res = await (ValueTask<int>)instance.ConfigureAwait();
res = await (Task<int>)instance.WrappingValueTaskAsTask();
}, persistPrepareResultToFile: pathSerialize[0]);
return 0;
}, new string[] { path });
Expand Down
11 changes: 5 additions & 6 deletions test/coverlet.core.tests/Coverage/CoverageTests.AsyncForeach.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,13 @@ public void AsyncForeach()
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncForeach>(instance =>
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncForeach>(async instance =>
{
int res = ((ValueTask<int>)instance.SumWithATwist(AsyncEnumerable.Range(1, 5))).GetAwaiter().GetResult();
res += ((ValueTask<int>)instance.Sum(AsyncEnumerable.Range(1, 3))).GetAwaiter().GetResult();
res += ((ValueTask<int>)instance.SumEmpty()).GetAwaiter().GetResult();
((ValueTask)instance.GenericAsyncForeach<object>(AsyncEnumerable.Range(1, 3))).GetAwaiter().GetResult();
int res = await (ValueTask<int>)instance.SumWithATwist(AsyncEnumerable.Range(1, 5));
res += await (ValueTask<int>)instance.Sum(AsyncEnumerable.Range(1, 3));
res += await (ValueTask<int>)instance.SumEmpty();
await (ValueTask)instance.GenericAsyncForeach<object>(AsyncEnumerable.Range(1, 3));

return Task.CompletedTask;
}, persistPrepareResultToFile: pathSerialize[0]);
return 0;
}, new string[] { path });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,10 @@ public void AsyncIterator()
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncIterator>(instance =>
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncIterator>(async instance =>
{
int res = ((Task<int>)instance.Issue1104_Repro()).GetAwaiter().GetResult();
int res = await (Task<int>)instance.Issue1104_Repro();

return Task.CompletedTask;
}, persistPrepareResultToFile: pathSerialize[0]);
return 0;
}, new string[] { path });
Expand Down
7 changes: 3 additions & 4 deletions test/coverlet.core.tests/Coverage/CoverageTests.AwaitUsing.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,11 @@ public void AwaitUsing()
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AwaitUsing>(instance =>
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AwaitUsing>(async instance =>
{
((ValueTask)instance.HasAwaitUsing()).GetAwaiter().GetResult();
((Task)instance.Issue914_Repro()).GetAwaiter().GetResult();
await (ValueTask)instance.HasAwaitUsing();
await (Task)instance.Issue914_Repro();

return Task.CompletedTask;
}, persistPrepareResultToFile: pathSerialize[0]);
return 0;
}, new string[] { path });
Expand Down
Loading