Skip to content

Commit 02fc154

Browse files
baronfelmarcpopMSFT
authored andcommitted
add test to show forced base image
1 parent 5e482f8 commit 02fc154

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

test/Microsoft.NET.Build.Containers.IntegrationTests/CreateNewImageTests.cs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,72 @@ public async System.Threading.Tasks.Task CreateNewImage_RootlessBaseImage()
296296
Assert.Equal(RootlessUser, imageBuilder.BaseImageConfig.GetUser());
297297
}
298298

299+
300+
[DockerAvailableFact]
301+
public void CanOverrideContainerImageFormat()
302+
{
303+
DirectoryInfo newProjectDir = new(GetTestDirectoryName());
304+
305+
if (newProjectDir.Exists)
306+
{
307+
newProjectDir.Delete(recursive: true);
308+
}
309+
310+
newProjectDir.Create();
311+
312+
new DotnetNewCommand(_testOutput, "console", "-f", ToolsetInfo.CurrentTargetFramework)
313+
.WithVirtualHive()
314+
.WithWorkingDirectory(newProjectDir.FullName)
315+
.Execute()
316+
.Should().Pass();
317+
318+
new DotnetCommand(_testOutput, "build", "--configuration", "release")
319+
.WithWorkingDirectory(newProjectDir.FullName)
320+
.Execute()
321+
.Should().Pass();
322+
323+
ParseContainerProperties pcp = new();
324+
(IBuildEngine buildEngine, List<string?> errors) = SetupBuildEngine();
325+
pcp.BuildEngine = buildEngine;
326+
327+
pcp.FullyQualifiedBaseImageName = "mcr.microsoft.com/dotnet/runtime:9.0";
328+
pcp.ContainerRegistry = "localhost:5010";
329+
pcp.ContainerRepository = "dotnet/testimage";
330+
pcp.ContainerImageTags = new[] { "5.0", "latest" };
331+
332+
Assert.True(pcp.Execute(), FormatBuildMessages(errors));
333+
Assert.Equal("mcr.microsoft.com", pcp.ParsedContainerRegistry);
334+
Assert.Equal("dotnet/runtime", pcp.ParsedContainerImage);
335+
Assert.Equal("9.0", pcp.ParsedContainerTag);
336+
337+
Assert.Equal("dotnet/testimage", pcp.NewContainerRepository);
338+
pcp.NewContainerTags.Should().BeEquivalentTo(new[] { "5.0", "latest" });
339+
340+
CreateNewImage cni = new();
341+
(buildEngine, errors) = SetupBuildEngine();
342+
cni.BuildEngine = buildEngine;
343+
344+
cni.BaseRegistry = pcp.ParsedContainerRegistry;
345+
cni.BaseImageName = pcp.ParsedContainerImage;
346+
cni.BaseImageTag = pcp.ParsedContainerTag;
347+
cni.Repository = pcp.NewContainerRepository;
348+
cni.OutputRegistry = "localhost:5010";
349+
cni.PublishDirectory = Path.Combine(newProjectDir.FullName, "bin", "release", ToolsetInfo.CurrentTargetFramework);
350+
cni.WorkingDirectory = "app/";
351+
cni.Entrypoint = new TaskItem[] { new(newProjectDir.Name) };
352+
cni.ImageTags = pcp.NewContainerTags;
353+
cni.ContainerRuntimeIdentifier = "linux-x64";
354+
cni.RuntimeIdentifierGraphPath = ToolsetUtils.GetRuntimeGraphFilePath();
355+
356+
cni.ImageFormat = KnownImageFormats.OCI.ToString();
357+
358+
Assert.True(cni.Execute(), FormatBuildMessages(errors));
359+
360+
cni.GeneratedContainerMediaType.Should().Be(SchemaTypes.OciManifestV1);
361+
newProjectDir.Delete(true);
362+
}
363+
364+
299365
private static (IBuildEngine buildEngine, List<string?> errors) SetupBuildEngine()
300366
{
301367
List<string?> errors = new();

0 commit comments

Comments
 (0)