Matt (pactflow.io / pact-js / pact-go)
Daniele Del Piano
03/15/2025, 7:34 AMMatt (pactflow.io / pact-js / pact-go)
Daniele Del Piano
03/15/2025, 9:04 AMGitHub
03/22/2025, 3:25 PM<https://github.com/pact-foundation/pact-net/tree/master|master>
by adamrodger
<https://github.com/pact-foundation/pact-net/commit/c72173242045c5d9d4459d10a2831256c0529164|c7217324>
- chore(ffi): Upgrade to FFI 0.4.27
pact-foundation/pact-netGitHub
03/22/2025, 3:29 PM<https://github.com/pact-foundation/pact-net/tree/master|master>
by adamrodger
<https://github.com/pact-foundation/pact-net/commit/8661b21112b6b9e56ba31315d027b5b69602b08c|8661b211>
- chore(deps): Upgrade to System.Text.Json 8.0.5
pact-foundation/pact-netGitHub
03/22/2025, 4:00 PM<https://github.com/pact-foundation/pact-net/tree/master|master>
by adamrodger
<https://github.com/pact-foundation/pact-net/commit/171c82c2da0f000d424fd94a1ccd4fe910955d0e|171c82c2>
- fix(ci): Reinstate triggering releases on pushed tags
pact-foundation/pact-netGitHub
03/22/2025, 4:04 PMGitHub
03/23/2025, 4:44 PMwhile true; do dotnet test MyApp.Integrationtest --blame-hang --blame-hang-timeout 10000 ; sleep 1; done
• once the test hangs, use dotnet-dump to analyze issue
Expected behavior
A clear and concise description of what you expected to happen.
• test should not hangs
Log Output
Applicable log output. Please ensure you remove any sensitive information.
00007F04EACEB710 00007f468de3488d [InlinedCallFrame: 00007f04eaceb710] PactNet.Interop.NativeInterop.CleanupMockServer(Int32)
00007F04EACEB710 00007f46199bc919 [InlinedCallFrame: 00007f04eaceb710] PactNet.Interop.NativeInterop.CleanupMockServer(Int32)
00007F04EACEB700 00007F46199BC919 ILStubClass.IL_STUB_PInvoke(Int32)
00007F04EACEB790 00007F46199BC88A PactNet.Drivers.MockServerDriver.ReleaseUnmanagedResources()
00007F04EACEB7B0 00007F46199BC848 PactNet.Drivers.MockServerDriver.Dispose()
00007F04EACEB7D0 00007F4613B9D36C PactNet.PactBuilder+<VerifyAsync>d__9.MoveNext()
00007F04EACEB7F0 00007F4613B9D2D5 PactNet.PactBuilder+<VerifyAsync>d__9.MoveNext()
00007F04EACEB850 00007F461997BF01 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[PactNet.PactBuilder+<VerifyAsync>d__9, PactNet]].ExecutionContextCallback(System.Object)
00007F04EACEB870 00007F4613878091 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
00007F04EACEB8C0 00007F461997BDB4 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[PactNet.PactBuilder+<VerifyAsync>d__9, PactNet]].MoveNext(System.Threading.Thread)
00007F04EACEB910 00007F461997BCAA System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[PactNet.PactBuilder+<VerifyAsync>d__9, PactNet]].MoveNext()
00007F04EACEB930 00007F4613BA9B09 Xunit.Sdk.AsyncTestSyncContext+<>c__DisplayClass7_0.<Post>b__0() [/_/src/xunit.execution/Sdk/AsyncTestSyncContext.cs @ 58]
00007F04EACEB970 00007F4612014FF3 Xunit.Sdk.XunitWorkerThread+<>c.<QueueUserWorkItem>b__5_0(System.Object) [/_/src/common/XunitWorkerThread.cs @ 37]
00007F04EACEB9B0 00007F4613878091 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
00007F04EACEBA00 00007F460E817994 System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)
00007F04EACEBC50 00007f468da26413 [DebuggerU2MCatchHandlerFrame: 00007f04eacebc50]
Additional context
Add any other context about the problem here.
pact-foundation/pact-netGitHub
03/23/2025, 7:06 PM<https://github.com/pact-foundation/pact-net/tree/master|master>
by adamrodger
<https://github.com/pact-foundation/pact-net/commit/b3c2fe14a513a886dab165721b156526765690fa|b3c2fe14>
- chore: Delete some old unused tests
pact-foundation/pact-netGitHub
03/27/2025, 1:35 PMExecute
method of pact-net\src\PactNet\Verifier\InteropVerifierProvider.cs
by passing down the timeout
Timespan from pact-net\src\PactNet\Verifier\PactVerifierSource.cs
.
Wrapping the result in a try-catch, the explicit timeout exception can be caught and thrown back up.
## Further work
I have encountered further issues with no explanations in the errors dure to the limited feedback from the pact-core errors. It would be useful to log config/set up errors with the pact server and return status codes when running the mock server if requests fail or if the application stop unexpectedly.
## Alternatives
This could be done in pact-core and updated with additional errors for connection issues to the mock server
pact-foundation/pact-netIsaac Richardson
03/28/2025, 9:41 AMMayamiko K
03/28/2025, 11:24 AMGitHub
03/28/2025, 11:33 AMThe active test run was aborted. Reason: Test host process crashed
Test Run Aborted.
_VSTestConsole:
MSB4181: The "VSTestTask" task returned false but did not log an error.
1>Done Building Project "/app/tests/MyProject.Pacts/MyProject.Pacts.csproj" (VSTest target(s)) -- FAILED.
Build FAILED.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:03.52
Process exited with code 1
Test ignored: MyProject.ProviderTests.VerifyPacts, ignore reason: Interrupted by build execution timeout
Consumer tests work absolutely fine, it's only provider tests that crash.
Steps To Reproduce
Unsure currently - it was working fine before the upgrade
Additional context
The diff between 5.0.0 and 5.0.1 only really has an FFI upgrade in it, so I'm assuming the issue is there and that it's crashing the provider tests.
pact-foundation/pact-netErich Zimmerman
04/01/2025, 9:35 PMJordi March
04/09/2025, 12:52 PMGitHub
04/22/2025, 1:46 PMGitHub
04/24/2025, 7:28 AMMessagingProvider
and is configured to download from a pact broker:
using var verifier = new PactVerifier(config);
verifier.MessagingProvider("personal-details-api", CreateJsonSettings())
.WithProviderMessages(scenarios =>
{
scenarios.Add("An event is created", _event);
})
.WithPactBrokerSource(_pactBrokerUri)
.Verify();
}
I was hoping/assuming that this would only download the messaging pact from pact broker but it is also downloading the request/response pact too so fails as it only expects messages.
The "provider" name in Pact Broker is the same (which makes sense to me as the provider is the same), but do I have to have unique provider names?
pact-foundation/pact-netGitHub
05/06/2025, 5:08 PMhttpVerifier.WithHttpEndpoint(providerUri)
Then I'm calling Verify()
method
Log Output
I'm getting 401
Could you guys help me to understand what I'm missing ?
pact-foundation/pact-netGitHub
05/27/2025, 5:21 PMDimitris Dranidis
06/05/2025, 3:29 PM.WithMessages(scenarios => {
scenarios.Add(
"scenario description",
builder => SetupDescriptionA(builder));
}, _serializerOptions) ...
and the state handler "prepare data" in the middleware. I would expect the state handler to execute FIRST to prepare the data for the content of the message, and THEN the description handler to execute SECOND so that it uses a messageProducer function to generate the message based on the prepared data, But it is the opposite!
This forces us to abandon providerStates and only use descriptions for both setting the environment and producing the message.
In case, I misunderstand something please let me know.
Thank you in advance!GitHub
06/06/2025, 3:36 PM<https://github.com/dranidis/pact-dotnet-message-provider>
Expected behavior
We have a provider test of an AMQP interaction in Pact. The interaction has a "description" and "providerStates". We added in the test:
.WithMessages(scenarios => {
scenarios.Add(
"scenario description",
builder => SetupDescriptionA(builder));
}, _serializerOptions) ...
and the state handler "prepare data" in the middleware.
I would expect the state handler to execute FIRST to prepare the data for the content of the message, and THEN the description handler to execute SECOND so that it uses a messageProducer function to generate the message based on the prepared data, But it is the opposite!
This forces us to abandon providerStates and only use descriptions for both setting the environment and producing the message.
In case, I misunderstand something please let me know.
pact-foundation/pact-netGitHub
06/13/2025, 5:10 PMGitHub
06/14/2025, 1:33 PMGitHub
06/14/2025, 1:34 PM@dependabot rebase
.
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
• @dependabot rebase
will rebase this PR
• @dependabot recreate
will recreate this PR, overwriting any edits that have been made to it
• @dependabot merge
will merge this PR after your CI passes on it
• @dependabot squash and merge
will squash and merge this PR after your CI passes on it
• @dependabot cancel merge
will cancel a previously requested merge and block automerging
• @dependabot reopen
will reopen this PR if it is closed
• @dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
• @dependabot show <dependency name> ignore conditions
will show all of the ignore conditions of the specified dependency
• @dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
• @dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
• @dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the Security Alerts page.
pact-foundation/pact-netRyan Child
06/18/2025, 3:00 PMZachary Lysobey
06/20/2025, 12:56 PMGitHub
06/20/2025, 2:19 PM<http://localhost:41952/pact-messages/>
, it receive a 404 response without going through the HandleRequest
method of MessageProvider
.
If I modify the prefix uri with 127.0.0.1
, then it works in all cases.
What is important is that the Uri added to the HttpListener must be 127.0.0.1
. Then, the returned uri can be the ip
or localhost
it works in both cases.
I know it is connecting to the listener somehow because if I comment out the start of the HttpListener, then it cannot connect.
There is definetely something going in the middle with localhost
but I can't figure it out.
Steps To Reproduce
I didn't succeed yet identifying what's going on.
Expected behavior
The listener should be able to receive pact_verifier request
Log Output
2025-06-20T13:58:12.662599Z DEBUG ThreadId(01) verify_interaction{interaction="A valid message"}: reqwest::connect: starting new connection: <http://127.0.0.1:49152/>
2025-06-20T13:58:12.662613Z DEBUG ThreadId(01) verify_interaction{interaction="A valid message"}: hyper_util::client::legacy::connect::http: connecting to 127.0.0.1:49152
2025-06-20T13:58:12.662888Z DEBUG ThreadId(01) verify_interaction{interaction="A valid message"}: hyper_util::client::legacy::connect::http: connected to 127.0.0.1:49152
2025-06-20T13:58:12.691760Z DEBUG ThreadId(01) verify_interaction{interaction="A valid message"}: hyper_util::client::legacy::pool: pooling idle connection for ("http", 127.0.0.1:49152)
2025-06-20T13:58:12.691815Z DEBUG ThreadId(01) verify_interaction{interaction="A valid message"}: pact_verifier::provider_client: Received native response: Response { url: "<http://127.0.0.1:49152/pact-messages>", status: 404, headers: {"content-type": "text/html", "server": "Microsoft-NetCore/2.0", "date": "Fri, 20 Jun 2025 13:58:12 GMT", "content-length": "30"} }
2025-06-20T13:58:12.691945Z INFO ThreadId(01) verify_interaction{interaction="A valid message"}: pact_verifier::provider_client: Received response: HTTP Response ( status: 404, headers: Some({"content-type": ["text/html"], "server": ["Microsoft-NetCore/2.0"], "date": ["Fri, 20 Jun 2025 13:58:12 GMT"], "content-length": ["30"]}), body: Present(30 bytes, text/html) )
2025-06-20T13:58:12.691967Z DEBUG ThreadId(01) verify_interaction{interaction="A valid message"}: pact_verifier::provider_client: body:
<h1>Not Found (Not Found)</h1>
pact-foundation/pact-netTiago Bernardo
06/25/2025, 3:26 PMJegadeesan Ponnusamy
06/26/2025, 3:29 PMdiscriminator
, but the Pact.NET library doesn't seems to support this. Could you please let us know, how we should proceed further to test this? Thank you. https://docs.pactflow.io/docs/bi-directional-contract-testing/contracts/oas/keyword-support#general-advice