Skip to content

Replace tmds exec function #1755

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@
-->
<!-- VSTest dependency versions -->
<!-- https://github.com/microsoft/vstest/blob/fde8bf79d3f0f80e3548f873a56ffb4100c0ae49/eng/Versions.props#L22C1-L54C2 -->
<MicrosoftBuildUtilitiesCorePackageVersion>15.9.20</MicrosoftBuildUtilitiesCorePackageVersion>
<SystemReflectionMetadataVersion>1.6.0</SystemReflectionMetadataVersion>
<SystemCollectionsImmutableVersion>1.5.0</SystemCollectionsImmutableVersion>
<!--<MicrosoftBuildUtilitiesCorePackageVersion>15.9.20</MicrosoftBuildUtilitiesCorePackageVersion>-->
<!--<SystemReflectionMetadataVersion>1.6.0</SystemReflectionMetadataVersion>
<SystemCollectionsImmutableVersion>1.5.0</SystemCollectionsImmutableVersion>-->

<!-- some additional information about dependency management limitations for MSBuild tasks (coverlet.msbuild.tasks)
- msBuild task with dependencies https://natemcmaster.com/blog/2017/11/11/msbuild-task-with-dependencies/
Expand Down
18 changes: 9 additions & 9 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
<GlobalPackageReference Include="Nerdbank.GitVersioning" Version="3.7.115" />
</ItemGroup>
<PropertyGroup>
<MicrosoftBuildVersion>17.13.9</MicrosoftBuildVersion>
<MicrosoftCodeAnalysisVersion>4.12.0</MicrosoftCodeAnalysisVersion>
<MicrosoftBuildVersion>17.13.26</MicrosoftBuildVersion>
<MicrosoftCodeAnalysisVersion>4.13.0</MicrosoftCodeAnalysisVersion>
<!-- Test Platform, .NET Test SDK and Object Model -->
<MicrosoftNETTestSdkVersion>17.13.0</MicrosoftNETTestSdkVersion>
<NugetPackageVersion>6.13.2</NugetPackageVersion>
<NugetPackageVersion>6.14.0</NugetPackageVersion>
<XunitV3Version>2.0.0</XunitV3Version>
<XunitRunnerVisualstudioVersion>3.0.2</XunitRunnerVisualstudioVersion>
</PropertyGroup>
Expand All @@ -21,7 +21,7 @@
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildVersion)" />
<PackageVersion Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildVersion)" />
<PackageVersion Include="Microsoft.Build.Locator" Version="1.7.8" />
<PackageVersion Include="Microsoft.Build.Locator" Version="1.9.1" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="$(MicrosoftCodeAnalysisVersion)" />
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="8.0.2" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
Expand Down Expand Up @@ -54,18 +54,18 @@
<PackageVersion Include="Tmds.ExecFunction" Version="0.8.0" />
<PackageVersion Include="xunit.v3" Version="$(XunitV3Version)" />
<PackageVersion Include="xunit.runner.visualstudio" Version="$(XunitRunnerVisualstudioVersion)" />
<PackageVersion Include="System.Buffers" Version="4.6.0" />
<PackageVersion Include="System.Buffers" Version="4.6.1" />
<PackageVersion Include="System.Collections.Immutable" Version="8.0.0" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
<PackageVersion Include="System.Linq.Async" Version="6.0.1" />
<PackageVersion Include="System.Memory" Version="4.6.0" />
<PackageVersion Include="System.Memory" Version="4.6.3" />
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
<PackageVersion Include="System.Reflection.Metadata" Version="8.0.1" />
<PackageVersion Include="System.Runtime.CompilerServices.Unsafe" Version="6.1.0" />
<PackageVersion Include="System.Security.Cryptography.Pkcs" Version="6.0.5" />
<PackageVersion Include="System.Runtime.CompilerServices.Unsafe" Version="6.1.2" />
<PackageVersion Include="System.Security.Cryptography.Pkcs" Version="8.0.1" />
<PackageVersion Include="System.Text.Encoding.CodePages" Version="8.0.0" />
<PackageVersion Include="System.Text.Json" Version="8.0.5" />
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.6.0" />
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.6.3" />
</ItemGroup>
</Project>
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "8.0.407"
"version": "8.0.408"
}
}
14 changes: 7 additions & 7 deletions src/coverlet.core/coverlet.core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" VersionOverride="6.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyModel" VersionOverride="6.0.2" />
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" VersionOverride="6.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" VersionOverride="6.0.2" />
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" />
<PackageReference Include="Microsoft.Extensions.DependencyModel" />
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
<PackageReference Include="Mono.Cecil" />
<PackageReference Include="NuGet.Versioning" />
<PackageReference Include="Newtonsoft.Json" />
<PackageReference Include="System.Text.Json" VersionOverride="6.0.11" />
<PackageReference Include="System.Reflection.Metadata" VersionOverride="$(SystemReflectionMetadataVersion)" />
<PackageReference Include="System.Collections.Immutable" VersionOverride="$(SystemCollectionsImmutableVersion)" />
<PackageReference Include="System.Text.Json" />
<PackageReference Include="System.Reflection.Metadata" />
<PackageReference Include="System.Collections.Immutable" />
<PackageReference Include="System.Buffers" />
<PackageReference Include="System.Memory" />
<PackageReference Include="System.Threading.Tasks.Extensions" />
Expand Down
2 changes: 1 addition & 1 deletion src/coverlet.msbuild.tasks/coverlet.msbuild.tasks.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Build.Utilities.Core" VersionOverride="$(MicrosoftBuildUtilitiesCorePackageVersion)" PrivateAssets="all" ExcludeAssets="Runtime" />
<PackageReference Include="Microsoft.Build.Utilities.Core" PrivateAssets="all" ExcludeAssets="Runtime" />
</ItemGroup>

<ItemGroup>
Expand Down
123 changes: 47 additions & 76 deletions test/coverlet.core.coverage.tests/Coverage/CoverageTests.AsyncAwait.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,31 @@
using Coverlet.Core.CoverageSamples.Tests;
using Coverlet.Core.Tests;
using Coverlet.Tests.Utils;
using Tmds.Utils;
using Xunit;

namespace Coverlet.CoreCoverage.Tests
{
public partial class CoverageTests
{
[Fact]
public void AsyncAwait()
public async Task AsyncAwaitAsync()
{
string path = Path.GetTempFileName();
try
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncAwait>(async instance =>
{
instance.SyncExecution();

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();

}, persistPrepareResultToFile: pathSerialize[0]);
return 0;
}, [path]);

CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncAwait>(async instance =>
{
instance.SyncExecution();

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();

}, persistPrepareResultToFile: path);

TestInstrumentationHelper.GetCoverageResult(path)
.Document("Instrumentation.AsyncAwait.cs")
Expand Down Expand Up @@ -73,21 +69,16 @@ public void AsyncAwait()
}

[Fact]
public void AsyncAwait_Issue_669_1()
public async Task AsyncAwait_Issue_669_1Async()
{
string path = Path.GetTempFileName();
try
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_669_1>(async instance =>
{
await (Task)instance.Test();
},
persistPrepareResultToFile: pathSerialize[0]);

return 0;
}, [path]);
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_669_1>(async instance =>
{
await (Task)instance.Test();
},
persistPrepareResultToFile: path);

TestInstrumentationHelper.GetCoverageResult(path)
.Document("Instrumentation.AsyncAwait.cs")
Expand All @@ -102,23 +93,18 @@ public void AsyncAwait_Issue_669_1()
}
}

[Fact(Skip = "Unhandled exception: System.InvalidOperationException: Sequence contains more than one matching element, InstrumenterHelper.cs:line 139 ")]
public void AsyncAwait_Issue_669_2()
[Fact]
public async Task AsyncAwait_Issue_669_2Async()
{
string path = Path.GetTempFileName();
try
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_669_2>(async instance =>
{
await (ValueTask<System.Net.Http.HttpResponseMessage>)instance.SendRequest();
},
persistPrepareResultToFile: pathSerialize[0],
assemblyLocation: Assembly.GetExecutingAssembly().Location);

return 0;
}, [path]);
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_669_2>(async instance =>
{
await (ValueTask<System.Net.Http.HttpResponseMessage>)instance.SendRequest();
},
persistPrepareResultToFile: path,
assemblyLocation: Assembly.GetExecutingAssembly().Location);

TestInstrumentationHelper.GetCoverageResult(path)
.Document("Instrumentation.AsyncAwait.cs")
Expand All @@ -132,21 +118,16 @@ public void AsyncAwait_Issue_669_2()
}

[Fact]
public void AsyncAwait_Issue_1177()
public async Task AsyncAwait_Issue_1177Async()
{
string path = Path.GetTempFileName();
try
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1177>(async instance =>
{
await (Task)instance.Test();
},
persistPrepareResultToFile: pathSerialize[0]);

return 0;
}, [path]);
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1177>(async instance =>
{
await (Task)instance.Test();
},
persistPrepareResultToFile: path);

Core.Instrumentation.Document document = TestInstrumentationHelper.GetCoverageResult(path).Document("Instrumentation.AsyncAwait.cs");
document.AssertLinesCovered(BuildConfiguration.Debug, (133, 1), (134, 1), (135, 1), (136, 1), (137, 1));
Expand All @@ -159,21 +140,16 @@ public void AsyncAwait_Issue_1177()
}

[Fact]
public void AsyncAwait_Issue_1233()
public async Task AsyncAwait_Issue_1233Async()
{
string path = Path.GetTempFileName();
try
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1233>(async instance =>
{
await (Task)instance.Test();
},
persistPrepareResultToFile: pathSerialize[0]);

return 0;
}, [path]);
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1233>(async instance =>
{
await (Task)instance.Test();
},
persistPrepareResultToFile: path);

Core.Instrumentation.Document document = TestInstrumentationHelper.GetCoverageResult(path).Document("Instrumentation.AsyncAwait.cs");
document.AssertLinesCovered(BuildConfiguration.Debug, (150, 1));
Expand All @@ -186,22 +162,17 @@ public void AsyncAwait_Issue_1233()
}

[Fact]
public void AsyncAwait_Issue_1275()
public async Task AsyncAwait_Issue_1275Async()
{
string path = Path.GetTempFileName();
try
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1275>(async instance =>
{
using var cts = new CancellationTokenSource();
await (Task)instance.Execute(cts.Token);
},
persistPrepareResultToFile: pathSerialize[0]);

return 0;
}, [path]);
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<Issue_1275>(async instance =>
{
using var cts = new CancellationTokenSource();
await (Task)instance.Execute(cts.Token);
},
persistPrepareResultToFile: path);

Core.Instrumentation.Document document = TestInstrumentationHelper.GetCoverageResult(path).Document("Instrumentation.AsyncAwait.cs");
document.AssertLinesCoveredFromTo(BuildConfiguration.Debug, 170, 176);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,22 @@ namespace Coverlet.CoreCoverage.Tests
public partial class CoverageTests
{
[Fact]
public void AsyncAwaitWithValueTask()
public async Task AsyncAwaitWithValueTaskAsync()
{
string path = Path.GetTempFileName();
try
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncAwaitValueTask>(async instance =>
{
instance.SyncExecution();
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncAwaitValueTask>(async instance =>
{
instance.SyncExecution();

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;
}, [path]);
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: path);

TestInstrumentationHelper.GetCoverageResult(path)
.Document("Instrumentation.AsyncAwaitValueTask.cs")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,19 @@ namespace Coverlet.CoreCoverage.Tests
public partial class CoverageTests
{
[Fact]
public void AsyncForeach()
public async Task AsyncForeachAsync()
{
string path = Path.GetTempFileName();
try
{
FunctionExecutor.Run(async (string[] pathSerialize) =>
{
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncForeach>(async instance =>
{
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));
CoveragePrepareResult coveragePrepareResult = await TestInstrumentationHelper.Run<AsyncForeach>(async instance =>
{
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));

}, persistPrepareResultToFile: pathSerialize[0]);
return 0;
}, [path]);
}, persistPrepareResultToFile: path);

TestInstrumentationHelper.GetCoverageResult(path)
.Document("Instrumentation.AsyncForeach.cs")
Expand Down
Loading
Loading