Skip to content

[BUG] Coverlet Nightly Crashing when merging JSON results  #1583

@pinkfloydx33

Description

@pinkfloydx33

Describe the bug
When running the coverlet nightly builds the generation of results fails when combining multiple test runs using JSON format. Individual runs generate reports successfully. The exception thrown is:

/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error : Deserialization of types without a parameterless constructor, a singular parameterized constructor, or a parameterized constructor annotated with 'JsonConstructorAttribute' is not supported. Type 'Coverlet.Core.Method'. Path: $['MyProject.Auth.dll']['/datadisks/disk1/work/1/s/src/MyProject.Auth/Utils/AuthExtensions.cs']['MyProject.Auth.Utils.AuthExtensions']['System.Threading.Tasks.Task MyProject.Auth.Utils.AuthExtensions::ClearRolesForUser(MyProject.Auth.Services.IExternalAuthService,System.String,System.Threading.CancellationToken)'] | LineNumber: 4 | BytePositionInLine: 204. [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.ThrowHelper.ThrowNotSupportedException(ReadStack& state, Utf8JsonReader& reader, NotSupportedException ex) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.ThrowHelper.ThrowNotSupportedException_DeserializeNoConstructor(Type type, Utf8JsonReader& reader, ReadStack& state) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.JsonDictionaryConverter`3.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, TDictionary& value) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.JsonDictionaryConverter`3.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, TDictionary& value) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.JsonDictionaryConverter`3.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, TDictionary& value) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.JsonDictionaryConverter`3.OnTryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, TDictionary& value) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo jsonTypeInfo, Nullable`1 actualByteCount) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 json, JsonTypeInfo jsonTypeInfo) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, JsonSerializerOptions options) [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at Coverlet.Core.Coverage.GetCoverageResult() in /_/src/coverlet.core/Coverage.cs:line 317 [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]
/home/AzDevOps/.nuget/packages/coverlet.msbuild/6.0.1-preview.31.g0db8de77cb/build/coverlet.msbuild.targets(72,5): error :    at Coverlet.MSbuild.Tasks.CoverageResultTask.Execute() in /_/src/coverlet.msbuild.tasks/CoverageResultTask.cs:line 87 [/datadisks/disk1/work/1/s/test/MyProject.Distributed.Extensions.Tests/MyProject.Distributed.Extensions.Tests.csproj]

Depending on the order in which I run the projects, the first line of the message will include multiple Type and/or method names

To Reproduce
Run coverlet nightly build (6.0.1-preview.31.g0db8de77cb) against a project and use json output format. Then, run coverlet against another project (or even the same one!) with the MergeWith option.

dotnet test --configuration Release --logger "console" --logger xunit -p:CollectCoverage=true -p:CoverletOutputFormat="json" -p:CoverageRoot="${PWD}/../Coverage" -p:MergeWith="${PWD}/../Coverage/coverage.json" 

Expected behavior
Coverlet does not crash

Actual behavior
Coverlet crashes with the above exception

Configuration (please complete the following information):
Please provide more information on your .NET configuration:
* Which coverlet package and version was used? 6.0.1-preview.31.g0db8de77cb (also crashes on 6.0.1-preview.26.g71c202b19e)
* Which version of .NET is the code running on? .NET7 but .NET SDK 8.0.0 is installed and active
* What OS and version, and what distro if applicable? Windows 11 x64, Ubuntu 22.04
* What is the architecture (x64, x86, ARM, ARM64)? x64
* Do you know whether it is specific to that configuration? Occurs on at least two configurations mentioned

Additional context
Works fine with package versions 6.0.0

Metadata

Metadata

Assignees

Labels

Priority:1Very important to release, not a ship blockerSolvedThe issue is solved and can be closedbugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions