Repository navigation
Conversation
The three published libraries are netstandard2.0 and do not move. Only the two samples and the two test projects targeted net8.0; they now target net10.0. global.json pins 10.0.100 and the workflow asks for the 10.0.x SDK. The Microsoft.Extensions packages in the samples and tests go from 6.0.x to 10.0.12, and the test stack to Test.Sdk 18.10.1, xunit 2.9.3, runner 4.0.0 and coverlet 10.1.0. That test bump turns xUnit2021 into an error here, because the repo treats warnings as errors, and it found sixteen calls to Assert.ThrowsAsync whose task was discarded. None of them asserted anything. They are now awaited, and their test methods return Task. One of the sixteen then failed for real: Publisher_Publish_ShouldThrow_WhenPublishFailed never set up its mock to throw, so no MerqureToolsException could ever come out. Its sibling two methods down does it right. The missing Throws<Exception>() is added. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
MerQure, MerQure.RbMQ and MerQure.Tools target net10.0. This is a breaking change for any consumer not on net10, hence the 3.0.0 floor in GitVersion.yml. Every Lucca consumer is already there: Figgo, Figgo.Services, figgo-sync and ilucca. netstandard2.0 was costing the packages two things that now go away. Microsoft.Bcl.AsyncInterfaces, a polyfill for IAsyncDisposable and IAsyncEnumerable which have been in the box since netcoreapp3.0, is gone. Microsoft.Extensions.Configuration and .Options move from 2.1.1, released in 2018 and inherited as a floor by every consumer, to 10.0.12. The package icon was declared as D:\a\MerQure\MerQure\MerQure-logo.png, the workspace path of a GitHub Actions Windows runner, so dotnet pack failed anywhere else. It now resolves from the props file's own folder. VersionPrefix said 0.0.7 while nuget.org was serving 2.0.1; the CI pack overrides it, but it is now 3.0.0 so a local pack says the truth too. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
MerQure was on the net8 list, but only for its edges: the two samples and the two test projects. The three published libraries were netstandard2.0 only.
Fix
Samples and tests target net10.0,
global.jsonpins 10.0.100, the workflow asks for the 10.0.x SDK. TheirMicrosoft.Extensions.*references go from 6.0.x to 10.0.12, and the test stack to Test.Sdk 18.10.1, xunit 2.9.3, runner 4.0.0, coverlet 10.1.0.What the test bump found
The repo sets
treatwarningsaserrors, so the newer xunit analyzers turned sixteen xUnit2021 findings into build errors:Assert.ThrowsAsynccalls whose returned task was discarded. Every one of them asserted nothing at all, inMessagingServiceTests,RetryBusServiceTestsandPublisherTests. They are now awaited and their methods returnTask.Awaiting them made one fail for real:
Publisher_Publish_ShouldThrow_WhenPublishFailedsets upPublishWithAcknowledgementAsyncbut never tells it to throw, soTryPublishWithBrokerAcknowledgementAsynchas nothing to catch and noMerqureToolsExceptioncan come out. Its siblingPublisher_PublishWithTransaction_ShouldThrow_WhenPublishFailed, two methods down, does it right with.Throws<Exception>(). The missing call is added, and the test now exercises the path it was named for.Tests
Clean build, 34 tests pass. They were 34 before too, but twelve of them were asserting nothing.
The libraries drop netstandard2.0, and that is a major
MerQure,MerQure.RbMQandMerQure.Toolstarget net10.0 only.GitVersion.ymlgetsnext-version: 3.0.0so the next release says so; nuget.org is currently serving 2.0.1.This breaks any consumer not on net10. Every Lucca consumer is already there (Figgo, Figgo.Services, figgo-sync, ilucca), and the call was made deliberately rather than by multi targeting.
What netstandard2.0 was costing, and no longer does:
Microsoft.Bcl.AsyncInterfaces, a polyfill forIAsyncDisposableandIAsyncEnumerable, in the box since netcoreapp3.0Microsoft.Extensions.Configurationand.Options2.1.1, from 2018, inherited as a floor by every consumerPacked locally to check: the three
.nupkgcarrylib/net10.0only,MerQure.RbMQnow declaresMicrosoft.Extensions.*10.0.12, and the inter-package dependency readsMerQure 3.0.0.Two things the pack found
<None Include="D:�\MerQure\MerQure\MerQure-logo.png" />, the workspace path of a GitHub Actions Windows runner, sodotnet packfailed anywhere else, including locally. It now resolves through$(MSBuildThisFileDirectory).VersionPrefixandPackageVersionsaid 0.0.7 while nuget.org serves 2.0.1. The CI pack passes-p:PackageVersionfrom GitVersion so it never mattered there, but a local pack produced a 0.0.7. Both now read 3.0.0.🤖 Generated with Claude Code