From a0f1f7694b4602aa2ba7da6f167ddc4a56670ecc Mon Sep 17 00:00:00 2001 From: Andre Hofmeister <9199345+HofmeisterAn@users.noreply.github.com> Date: Sat, 22 Jun 2024 08:50:38 +0200 Subject: [PATCH] fix: Trim relative path indicators from Dockerfile path (#1203) --- .../Builders/ImageFromDockerfileBuilder.cs | 4 +++- .../Unit/Images/ImageFromDockerfileTest.cs | 9 ++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs b/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs index 4ec2387c6..cafcef128 100644 --- a/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs +++ b/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs @@ -3,6 +3,7 @@ namespace DotNet.Testcontainers.Builders using System; using System.Collections.Generic; using System.IO; + using System.Text.RegularExpressions; using Docker.DotNet.Models; using DotNet.Testcontainers.Configurations; using DotNet.Testcontainers.Images; @@ -65,7 +66,8 @@ public ImageFromDockerfileBuilder WithName(IImage name) /// public ImageFromDockerfileBuilder WithDockerfile(string dockerfile) { - return Merge(DockerResourceConfiguration, new ImageFromDockerfileConfiguration(dockerfile: dockerfile)); + var dockerfileFilePath = Regex.Replace(dockerfile, "^\\.(\\/|\\\\)", string.Empty, RegexOptions.None, TimeSpan.FromSeconds(1)); + return Merge(DockerResourceConfiguration, new ImageFromDockerfileConfiguration(dockerfile: dockerfileFilePath)); } /// diff --git a/tests/Testcontainers.Tests/Unit/Images/ImageFromDockerfileTest.cs b/tests/Testcontainers.Tests/Unit/Images/ImageFromDockerfileTest.cs index 116b4d323..a590d83f6 100644 --- a/tests/Testcontainers.Tests/Unit/Images/ImageFromDockerfileTest.cs +++ b/tests/Testcontainers.Tests/Unit/Images/ImageFromDockerfileTest.cs @@ -100,8 +100,11 @@ public async Task ThrowsDockerfileDirectoryDoesNotExist() Assert.Equal($"Directory '{Path.GetFullPath(dockerfileDirectory)}' does not exist.", exception.Message); } - [Fact] - public async Task BuildsDockerImage() + [Theory] + [InlineData("Dockerfile")] + [InlineData("./Dockerfile")] + [InlineData(".\\Dockerfile")] + public async Task BuildsDockerImage(string dockerfile) { // Given IImage tag1 = new DockerImage("localhost/testcontainers", Guid.NewGuid().ToString("D"), string.Empty); @@ -110,7 +113,7 @@ public async Task BuildsDockerImage() var imageFromDockerfileBuilder = new ImageFromDockerfileBuilder() .WithName(tag1) - .WithDockerfile("Dockerfile") + .WithDockerfile(dockerfile) .WithDockerfileDirectory("Assets/") .WithDeleteIfExists(true) .WithCreateParameterModifier(parameterModifier => parameterModifier.Tags.Add(tag2.FullName))