Skip to content

Commit eb7b50a

Browse files
committed
Green up one of the two tests by making the _IsMultiRIDBuild condition more correct
1 parent 76165ad commit eb7b50a

File tree

2 files changed

+21
-18
lines changed

2 files changed

+21
-18
lines changed

src/Containers/packaging/build/Microsoft.NET.Build.Containers.targets

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,9 +298,9 @@
298298

299299
<Target Name="_PublishMultiArchContainers" DependsOnTargets="$(PublishContainerDependsOn)" >
300300
<Error Text="ContainerArchiveOutputPath is invalid. It can only be a directory in multi-arch scenario because the runtime identifier is appended in the end of the filename."
301-
Condition="'$(ContainerArchiveOutputPath)' != '' and
302-
!$(ContainerArchiveOutputPath.EndsWith('/')) and
303-
!$(ContainerArchiveOutputPath.EndsWith('\\')) and
301+
Condition="'$(ContainerArchiveOutputPath)' != '' and
302+
!$(ContainerArchiveOutputPath.EndsWith('/')) and
303+
!$(ContainerArchiveOutputPath.EndsWith('\\')) and
304304
$(ContainerArchiveOutputPath.EndsWith('.tar.gz'))" />
305305

306306
<ItemGroup>
@@ -400,7 +400,14 @@
400400
Condition="'$(IsPublishable)' == 'true' AND '$(EnableSdkContainerSupport)' == 'true'">
401401
<PropertyGroup>
402402
<_IsMultiTFMBuild Condition="'$(TargetFrameworks)' != '' and '$(TargetFramework)' == ''">true</_IsMultiTFMBuild>
403-
<_IsMultiRIDBuild Condition="'$(BuildingInsideVisualStudio)' != 'true' and (('$(RuntimeIdentifiers)' != '' and '$(RuntimeIdentifier)' == '') or ('$(ContainerRuntimeIdentifiers)' != '' and '$(ContainerRuntimeIdentifier)' == ''))">true</_IsMultiRIDBuild>
403+
<!-- we are multi-RID if:
404+
* we have CRIDs and no CRID
405+
* we have RIDs and no (CRIDs or CRID or RID)
406+
-->
407+
<_HasCRIDsAndNoCRID Condition="'$(ContainerRuntimeIdentifiers)' != '' and '$(ContainerRuntimeIdentifier)' == ''">true</_HasCRIDsAndNoCRID>
408+
<_HasRIDs Condition="'$(RuntimeIdentifiers)' != ''">true</_HasRIDs>
409+
<_NoCRIDsOrCRIDorRID Condition="'$(ContainerRuntimeIdentifiers)' == '' and '$(ContainerRuntimeIdentifier)' == '' and '$(RuntimeIdentifier)' == ''">true</_NoCRIDsOrCRIDorRID>
410+
<_IsMultiRIDBuild Condition="'$(BuildingInsideVisualStudio)' != 'true' and ('$(_HasCRIDsAndNoCRID)' == true or ('$(_HasRIDs)' == 'true' and '$(_NoCRIDsOrCRIDorRID)' == 'true'))">true</_IsMultiRIDBuild>
404411
<_IsSingleRIDBuild Condition="'$(_IsMultiRIDBuild)' == ''">true</_IsSingleRIDBuild>
405412
</PropertyGroup>
406413

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

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -785,8 +785,7 @@ public void MultiArchStillAllowsSingleRID()
785785
{
786786
string imageName = NewImageName();
787787
string imageTag = "1.0";
788-
string imageX64 = $"{imageName}:{imageTag}-linux-x64";
789-
string imageArm64 = $"{imageName}:{imageTag}-linux-arm64";
788+
string qualifiedImageName = $"{imageName}:{imageTag}";
790789

791790
// Create a new console project
792791
DirectoryInfo newProjectDir = CreateNewProject("console");
@@ -814,19 +813,18 @@ public void MultiArchStillAllowsSingleRID()
814813
// images were created locally for each RID
815814
// and image index was NOT created
816815
commandResult.Should().Pass()
817-
.And.HaveStdOutContaining(GetPublishArtifactsPath(newProjectDir.FullName, "linux-x64"))
818-
.And.NotHaveStdOutContaining(GetPublishArtifactsPath(newProjectDir.FullName, "linux-arm64"))
819-
.And.HaveStdOutContaining($"Pushed image '{imageX64}' to local registry")
820-
.And.NotHaveStdOutContaining($"Pushed image '{imageArm64}' to local registry")
816+
// no rid-specific path because we didn't pass RuntimeIdentifier
817+
.And.NotHaveStdOutContaining(GetPublishArtifactsPath(newProjectDir.FullName, "linux-x64"))
818+
.And.HaveStdOutContaining($"Pushed image '{qualifiedImageName}' to local registry")
821819
.And.NotHaveStdOutContaining("Pushed image index");
822820

823821
// Check that the containers can be run
824822
CommandResult processResultX64 = ContainerCli.RunCommand(
825823
_testOutput,
826824
"--rm",
827825
"--name",
828-
$"test-container-{imageName}-x64",
829-
imageX64)
826+
$"test-container-{imageName}",
827+
qualifiedImageName)
830828
.Execute();
831829
processResultX64.Should().Pass().And.HaveStdOut("Hello, World!");
832830

@@ -839,8 +837,7 @@ public void MultiArchStillAllowsSingleRIDUsingJustRIDProperties()
839837
{
840838
string imageName = NewImageName();
841839
string imageTag = "1.0";
842-
string imageX64 = $"{imageName}:{imageTag}-linux-x64";
843-
string imageArm64 = $"{imageName}:{imageTag}-linux-arm64";
840+
string qualifiedImageName = $"{imageName}:{imageTag}";
844841

845842
// Create a new console project
846843
DirectoryInfo newProjectDir = CreateNewProject("console");
@@ -853,7 +850,7 @@ public void MultiArchStillAllowsSingleRIDUsingJustRIDProperties()
853850
// make it so the app is _able_ to target both linux TFMs
854851
"/p:RuntimeIdentifiers=\"linux-x64;linux-arm64\"",
855852
// but then only actually publishes for one of them
856-
"-r linux-x64",
853+
"-r", "linux-x64",
857854
$"/p:ContainerBaseImage={DockerRegistryManager.FullyQualifiedBaseImageAspNet}",
858855
$"/p:ContainerRepository={imageName}",
859856
$"/p:ContainerImageTag={imageTag}",
@@ -868,8 +865,7 @@ public void MultiArchStillAllowsSingleRIDUsingJustRIDProperties()
868865
commandResult.Should().Pass()
869866
.And.HaveStdOutContaining(GetPublishArtifactsPath(newProjectDir.FullName, "linux-x64"))
870867
.And.NotHaveStdOutContaining(GetPublishArtifactsPath(newProjectDir.FullName, "linux-arm64"))
871-
.And.HaveStdOutContaining($"Pushed image '{imageX64}' to local registry")
872-
.And.NotHaveStdOutContaining($"Pushed image '{imageArm64}' to local registry")
868+
.And.HaveStdOutContaining($"Pushed image '{qualifiedImageName}' to local registry")
873869
.And.NotHaveStdOutContaining("Pushed image index");
874870

875871
// Check that the containers can be run
@@ -878,7 +874,7 @@ public void MultiArchStillAllowsSingleRIDUsingJustRIDProperties()
878874
"--rm",
879875
"--name",
880876
$"test-container-{imageName}-x64",
881-
imageX64)
877+
qualifiedImageName)
882878
.Execute();
883879
processResultX64.Should().Pass().And.HaveStdOut("Hello, World!");
884880

0 commit comments

Comments
 (0)