Fix TestcontainersTests to ignore exception when stopping (#1314)

This commit is contained in:
Stef Heyenrath
2025-06-11 11:12:58 +02:00
committed by GitHub
parent 2f7e3a3178
commit ec248a9a78
2 changed files with 36 additions and 27 deletions

View File

@@ -69,7 +69,7 @@ public partial class TestcontainersTests
} }
finally finally
{ {
await wireMockContainer.StopAsync(); await StopAsync(wireMockContainer);
} }
} }
@@ -121,7 +121,7 @@ public partial class TestcontainersTests
} }
finally finally
{ {
await wireMockContainer.StopAsync(); await StopAsync(wireMockContainer);
} }
} }
@@ -136,7 +136,7 @@ public partial class TestcontainersTests
Then_ReplyMessage_Should_BeCorrect(reply); Then_ReplyMessage_Should_BeCorrect(reply);
await wireMockContainer.StopAsync(); await StopAsync(wireMockContainer);
} }
[Fact] [Fact]
@@ -150,7 +150,7 @@ public partial class TestcontainersTests
Then_ReplyMessage_Should_BeCorrect(reply); Then_ReplyMessage_Should_BeCorrect(reply);
await wireMockContainer.StopAsync(); await StopAsync(wireMockContainer);
} }
private static async Task<WireMockContainer> Given_WireMockContainerIsStartedForHttpAndGrpcAsync() private static async Task<WireMockContainer> Given_WireMockContainerIsStartedForHttpAndGrpcAsync()

View File

@@ -11,10 +11,11 @@ using WireMock.Net.Testcontainers;
using WireMock.Net.Testcontainers.Utils; using WireMock.Net.Testcontainers.Utils;
using WireMock.Net.Tests.Facts; using WireMock.Net.Tests.Facts;
using Xunit; using Xunit;
using Xunit.Abstractions;
namespace WireMock.Net.Tests.Testcontainers; namespace WireMock.Net.Tests.Testcontainers;
public partial class TestcontainersTests public partial class TestcontainersTests(ITestOutputHelper testOutputHelper)
{ {
[Fact] [Fact]
public async Task WireMockContainer_Build_And_StartAsync_and_StopAsync() public async Task WireMockContainer_Build_And_StartAsync_and_StopAsync()
@@ -28,7 +29,8 @@ public partial class TestcontainersTests
.WithAdminUserNameAndPassword(adminUsername, adminPassword) .WithAdminUserNameAndPassword(adminUsername, adminPassword)
.Build(); .Build();
await StartTestAndStopAsync(wireMockContainer); await StartTestAsync(wireMockContainer);
await StopAsync(wireMockContainer);
} }
// https://github.com/testcontainers/testcontainers-dotnet/issues/1322 // https://github.com/testcontainers/testcontainers-dotnet/issues/1322
@@ -48,7 +50,8 @@ public partial class TestcontainersTests
.WithCleanUp(true) .WithCleanUp(true)
.Build(); .Build();
await StartTestAndStopAsync(wireMockContainer); await StartTestAsync(wireMockContainer);
await StopAsync(wireMockContainer);
} }
[Fact] [Fact]
@@ -74,7 +77,8 @@ public partial class TestcontainersTests
var wireMockContainer = wireMockContainerBuilder.Build(); var wireMockContainer = wireMockContainerBuilder.Build();
await StartTestAndStopAsync(wireMockContainer); await StartTestAsync(wireMockContainer);
await StopAsync(wireMockContainer);
} }
[Fact] [Fact]
@@ -100,32 +104,35 @@ public partial class TestcontainersTests
var wireMockContainer = wireMockContainerBuilder.Build(); var wireMockContainer = wireMockContainerBuilder.Build();
await StartTestAndStopAsync(wireMockContainer); await StartTestAsync(wireMockContainer);
await StopAsync(wireMockContainer);
} }
private static async Task StartTestAndStopAsync(WireMockContainer wireMockContainer) private static async Task StartTestAsync(WireMockContainer wireMockContainer)
{
// Start
await wireMockContainer.StartAsync().ConfigureAwait(false);
// Assert
using (new AssertionScope())
{
var url = wireMockContainer.GetPublicUrl();
url.Should().NotBeNullOrWhiteSpace();
var adminClient = wireMockContainer.CreateWireMockAdminClient();
var settings = await adminClient.GetSettingsAsync();
settings.Should().NotBeNull();
}
}
private async Task StopAsync(WireMockContainer wireMockContainer)
{ {
try try
{ {
// Start
await wireMockContainer.StartAsync().ConfigureAwait(false);
// Assert
using (new AssertionScope())
{
var url = wireMockContainer.GetPublicUrl();
url.Should().NotBeNullOrWhiteSpace();
var adminClient = wireMockContainer.CreateWireMockAdminClient();
var settings = await adminClient.GetSettingsAsync();
settings.Should().NotBeNull();
}
// Stop
await wireMockContainer.StopAsync(); await wireMockContainer.StopAsync();
} }
catch catch (Exception ex)
{ {
// Sometimes we get this exception, so for now ignore it. // Sometimes we get this exception, so for now ignore it.
/* /*
@@ -136,6 +143,8 @@ public partial class TestcontainersTests
at DotNet.Testcontainers.Containers.DockerContainer.UnsafeStopAsync(CancellationToken ct) in /_/src/Testcontainers/Containers/DockerContainer.cs:line 567 at DotNet.Testcontainers.Containers.DockerContainer.UnsafeStopAsync(CancellationToken ct) in /_/src/Testcontainers/Containers/DockerContainer.cs:line 567
at DotNet.Testcontainers.Containers.DockerContainer.StopAsync(CancellationToken ct) in /_/src/Testcontainers/Containers/DockerContainer.cs:line 319 at DotNet.Testcontainers.Containers.DockerContainer.StopAsync(CancellationToken ct) in /_/src/Testcontainers/Containers/DockerContainer.cs:line 319
*/ */
testOutputHelper.WriteLine($"Exception during StopAsync: {ex}");
} }
} }
} }