Skip to content

feat!: Make the messaging provider handle scenario requests async #537

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 1 commit into
base: dev/async-message-factory
Choose a base branch
from

Conversation

adamrodger
Copy link
Contributor

This removes a wrinkle in the API whereby scenario factory methods can be async internally, but because the messaging provider was sync we had to do a sync-over-async call to generate those scenarios.

Instead, now the messaging provider runs in an async context, which means the API has changed such that async scenario factory methods are now the default internally. Any sync scenario factories are wrapped such that they become async with Task.FromResult.

This creates a breaking API change because the verifier and the messaging provider were both previously sync disposable, whereas now they're async disposable so the the messaging prodiver can stop the async request handling context.

@adamrodger adamrodger added this to the 6.0.0 milestone Apr 5, 2025
@adamrodger adamrodger requested a review from Copilot April 5, 2025 16:07
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot reviewed 12 out of 17 changed files in this pull request and generated 1 comment.

Files not reviewed (5)
  • samples/OrdersApi/Consumer.Tests/Consumer.Tests.csproj: Language not supported
  • samples/OrdersApi/Provider.Tests/Provider.Tests.csproj: Language not supported
  • src/PactNet.Abstractions/PactNet.Abstractions.csproj: Language not supported
  • tests/PactNet.Abstractions.Tests/PactNet.Abstractions.Tests.csproj: Language not supported
  • tests/PactNet.Tests/PactNet.Tests.csproj: Language not supported
Comments suppressed due to low confidence (1)

src/PactNet/Verifier/Messaging/MessagingProvider.cs:94

  • Returning null from the Start method when the cancellation token is triggered could lead to a null reference error in the caller. Consider throwing an exception or restructuring the control flow to handle this case explicitly.
return null;

@adamrodger adamrodger force-pushed the dev/async-message-provider branch from 7686959 to 3cf1914 Compare April 5, 2025 16:09
This removes a wrinkle in the API whereby scenario factory methods can
be async internally, but because the messaging provider was sync we had
to do a sync-over-async call to generate those scenarios.

Instead, now the messaging provider runs in an async context, which
means the API has changed such that async scenario factory methods are
now the default internally. Any sync scenario factories are wrapped such
that they become async with `Task.FromResult`.

This creates a breaking API change because the verifier and the
messaging provider were both previously sync disposable, whereas now
they're async disposable so the the messaging prodiver can stop the
async request handling context.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant