Fix WireMockContainerBuilder (duplicate entries) (#1222)

This commit is contained in:
Stef Heyenrath
2024-12-31 18:24:29 +01:00
committed by GitHub
parent 485f7ad952
commit ab7ce37e7e
7 changed files with 199 additions and 109 deletions

View File

@@ -7,8 +7,14 @@ using System.Threading.Tasks;
namespace WireMock.Net.Testcontainers.Utils;
internal static class ContainerUtils
/// <summary>
/// Some utility methods for containers.
/// </summary>
public static class TestcontainersUtils
{
/// <summary>
/// Get the OS platform of the Docker image.
/// </summary>
public static Lazy<Task<OSPlatform>> GetImageOSAsync = new(async () =>
{
if (TestcontainersSettings.OS.DockerEndpointAuthConfig == null)

View File

@@ -164,7 +164,7 @@ public sealed class WireMockContainer : DockerContainer
private static async Task<bool> PathStartsWithContainerMappingsPath(string value)
{
var imageOs = await ContainerUtils.GetImageOSAsync.Value;
var imageOs = await TestcontainersUtils.GetImageOSAsync.Value;
return value.StartsWith(ContainerInfoProvider.Info[imageOs].MappingsPath);
}

View File

@@ -36,7 +36,7 @@ public sealed class WireMockContainerBuilder : ContainerBuilder<WireMockContaine
[PublicAPI]
public WireMockContainerBuilder WithImage()
{
_imageOS ??= ContainerUtils.GetImageOSAsync.Value.GetAwaiter().GetResult();
_imageOS ??= TestcontainersUtils.GetImageOSAsync.Value.GetAwaiter().GetResult();
return WithImage(_imageOS.Value);
}
@@ -108,9 +108,10 @@ public sealed class WireMockContainerBuilder : ContainerBuilder<WireMockContaine
[PublicAPI]
public WireMockContainerBuilder WithWatchStaticMappings(bool includeSubDirectories)
{
return Merge(DockerResourceConfiguration, DockerResourceConfiguration.WithWatchStaticMappings(includeSubDirectories))
.WithCommand("--WatchStaticMappings true")
.WithCommand($"--WatchStaticMappingsInSubdirectories {includeSubDirectories}");
DockerResourceConfiguration.WithWatchStaticMappings(includeSubDirectories);
return
WithCommand("--WatchStaticMappings true").
WithCommand("--WatchStaticMappingsInSubdirectories", includeSubDirectories);
}
/// <summary>
@@ -124,9 +125,16 @@ public sealed class WireMockContainerBuilder : ContainerBuilder<WireMockContaine
{
Guard.NotNullOrEmpty(path);
return Merge(DockerResourceConfiguration, DockerResourceConfiguration.WithStaticMappingsPath(path))
.WithReadStaticMappings()
.WithCommand($"--WatchStaticMappingsInSubdirectories {includeSubDirectories}");
DockerResourceConfiguration.WithStaticMappingsPath(path);
return
WithReadStaticMappings().
WithCommand("--WatchStaticMappingsInSubdirectories", includeSubDirectories);
}
private WireMockContainerBuilder WithCommand(string param, bool value)
{
return !value ? this : WithCommand($"{param} true");
}
private WireMockContainerBuilder(WireMockConfiguration dockerResourceConfiguration) : base(dockerResourceConfiguration)