Skip to content

Commit ca7ee82

Browse files
committed
Green up one of the two tests by making the _IsMultiRIDBuild condition more correct
1 parent 56701a1 commit ca7ee82

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
@@ -297,9 +297,9 @@
297297

298298
<Target Name="_PublishMultiArchContainers" DependsOnTargets="$(PublishContainerDependsOn)" >
299299
<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."
300-
Condition="'$(ContainerArchiveOutputPath)' != '' and
301-
!$(ContainerArchiveOutputPath.EndsWith('/')) and
302-
!$(ContainerArchiveOutputPath.EndsWith('\\')) and
300+
Condition="'$(ContainerArchiveOutputPath)' != '' and
301+
!$(ContainerArchiveOutputPath.EndsWith('/')) and
302+
!$(ContainerArchiveOutputPath.EndsWith('\\')) and
303303
$(ContainerArchiveOutputPath.EndsWith('.tar.gz'))" />
304304

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

src/Tests/Microsoft.NET.Build.Containers.IntegrationTests/EndToEndTests.cs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -783,8 +783,7 @@ public void MultiArchStillAllowsSingleRID()
783783
{
784784
string imageName = NewImageName();
785785
string imageTag = "1.0";
786-
string imageX64 = $"{imageName}:{imageTag}-linux-x64";
787-
string imageArm64 = $"{imageName}:{imageTag}-linux-arm64";
786+
string qualifiedImageName = $"{imageName}:{imageTag}";
788787

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

821819
// Check that the containers can be run
822820
CommandResult processResultX64 = ContainerCli.RunCommand(
823821
_testOutput,
824822
"--rm",
825823
"--name",
826-
$"test-container-{imageName}-x64",
827-
imageX64)
824+
$"test-container-{imageName}",
825+
qualifiedImageName)
828826
.Execute();
829827
processResultX64.Should().Pass().And.HaveStdOut("Hello, World!");
830828

@@ -837,8 +835,7 @@ public void MultiArchStillAllowsSingleRIDUsingJustRIDProperties()
837835
{
838836
string imageName = NewImageName();
839837
string imageTag = "1.0";
840-
string imageX64 = $"{imageName}:{imageTag}-linux-x64";
841-
string imageArm64 = $"{imageName}:{imageTag}-linux-arm64";
838+
string qualifiedImageName = $"{imageName}:{imageTag}";
842839

843840
// Create a new console project
844841
DirectoryInfo newProjectDir = CreateNewProject("console");
@@ -851,7 +848,7 @@ public void MultiArchStillAllowsSingleRIDUsingJustRIDProperties()
851848
// make it so the app is _able_ to target both linux TFMs
852849
"/p:RuntimeIdentifiers=\"linux-x64;linux-arm64\"",
853850
// but then only actually publishes for one of them
854-
"-r linux-x64",
851+
"-r", "linux-x64",
855852
$"/p:ContainerBaseImage={DockerRegistryManager.FullyQualifiedBaseImageAspNet}",
856853
$"/p:ContainerRepository={imageName}",
857854
$"/p:ContainerImageTag={imageTag}",
@@ -866,8 +863,7 @@ public void MultiArchStillAllowsSingleRIDUsingJustRIDProperties()
866863
commandResult.Should().Pass()
867864
.And.HaveStdOutContaining(GetPublishArtifactsPath(newProjectDir.FullName, "linux-x64"))
868865
.And.NotHaveStdOutContaining(GetPublishArtifactsPath(newProjectDir.FullName, "linux-arm64"))
869-
.And.HaveStdOutContaining($"Pushed image '{imageX64}' to local registry")
870-
.And.NotHaveStdOutContaining($"Pushed image '{imageArm64}' to local registry")
866+
.And.HaveStdOutContaining($"Pushed image '{qualifiedImageName}' to local registry")
871867
.And.NotHaveStdOutContaining("Pushed image index");
872868

873869
// Check that the containers can be run
@@ -876,7 +872,7 @@ public void MultiArchStillAllowsSingleRIDUsingJustRIDProperties()
876872
"--rm",
877873
"--name",
878874
$"test-container-{imageName}-x64",
879-
imageX64)
875+
qualifiedImageName)
880876
.Execute();
881877
processResultX64.Should().Pass().And.HaveStdOut("Hello, World!");
882878

0 commit comments

Comments
 (0)