Skip to content

Commit 16fb359

Browse files
committed
check docker availability before arch support in tests
1 parent 6bc6a41 commit 16fb359

File tree

4 files changed

+20
-13
lines changed

4 files changed

+20
-13
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ static class ContainerCli
77
{
88
public static bool IsPodman => _isPodman.Value;
99

10+
public static bool IsAvailable => _isAvailable.Value;
11+
1012
public static RunExeCommand PullCommand(ITestOutputHelper log, params string[] args)
1113
=> CreateCommand(log, "pull", args);
1214

@@ -60,4 +62,7 @@ private static RunExeCommand CreateCommand(ITestOutputHelper log, string command
6062

6163
private static readonly Lazy<bool> _isPodman =
6264
new(() => new DockerCli(loggerFactory: new TestLoggerFactory()).GetCommand() == DockerCli.PodmanCommand);
65+
66+
private static readonly Lazy<bool> _isAvailable =
67+
new(() => new DockerCli(loggerFactory: new TestLoggerFactory()).IsAvailable());
6368
}

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33

44
namespace Microsoft.NET.Build.Containers.IntegrationTests;
55

6-
public class DockerSupportsArchFactAttribute : FactAttribute
6+
public class DockerIsAvailableAndSupportsArchFactAttribute : FactAttribute
77
{
8-
private readonly string _arch;
9-
10-
public DockerSupportsArchFactAttribute(string arch)
8+
public DockerIsAvailableAndSupportsArchFactAttribute(string arch)
119
{
12-
_arch = arch;
13-
14-
if (!DockerSupportsArchHelper.DaemonSupportsArch(_arch))
10+
if (!DockerSupportsArchHelper.DaemonIsAvailable)
11+
{
12+
base.Skip = "Skipping test because Docker is not available on this host.";
13+
}
14+
else if (!DockerSupportsArchHelper.DaemonSupportsArch(arch))
1515
{
16-
base.Skip = $"Skipping test because Docker daemon does not support {_arch}.";
16+
base.Skip = $"Skipping test because Docker daemon does not support {arch}.";
1717
}
1818
}
1919
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public override IEnumerable<object[]> GetData(MethodInfo testMethod)
3434

3535
internal static class DockerSupportsArchHelper
3636
{
37+
internal static bool DaemonIsAvailable => ContainerCli.IsAvailable;
38+
3739
internal static bool DaemonSupportsArch(string arch)
3840
{
3941
// an optimization - this doesn't change over time so we can compute it once

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,7 @@ public void EndToEnd_NoAPI_Console()
688688
privateNuGetAssets.Delete(true);
689689
}
690690

691-
[DockerSupportsArchFact("linux/arm64")]
691+
[DockerIsAvailableAndSupportsArchFact("linux/arm64")]
692692
public void EndToEndMultiArch_LocalRegistry()
693693
{
694694
string imageName = NewImageName();
@@ -768,7 +768,7 @@ private DirectoryInfo CreateNewProject(string template, [CallerMemberName] strin
768768
private string GetPublishArtifactsPath(string projectDir, string rid)
769769
=> Path.Combine(projectDir, "bin", "Debug", ToolsetInfo.CurrentTargetFramework, rid, "publish");
770770

771-
[DockerSupportsArchFact("linux/arm64")]
771+
[DockerIsAvailableAndSupportsArchFact("linux/arm64")]
772772
public void EndToEndMultiArch_ArchivePublishing()
773773
{
774774
string imageName = NewImageName();
@@ -841,7 +841,7 @@ public void EndToEndMultiArch_ArchivePublishing()
841841
newProjectDir.Delete(true);
842842
}
843843

844-
[DockerSupportsArchFact("linux/arm64")]
844+
[DockerIsAvailableAndSupportsArchFact("linux/arm64")]
845845
public void EndToEndMultiArch_RemoteRegistry()
846846
{
847847
string imageName = NewImageName();
@@ -966,7 +966,7 @@ public void EndToEndMultiArch_ContainerRuntimeIdentifiersOverridesRuntimeIdentif
966966
newProjectDir.Delete(true);
967967
}
968968

969-
[DockerSupportsArchFact("linux/arm64")]
969+
[DockerIsAvailableAndSupportsArchFact("linux/arm64")]
970970
public void EndToEndMultiArch_EnvVariables()
971971
{
972972
string imageName = NewImageName();
@@ -1033,7 +1033,7 @@ public void EndToEndMultiArch_EnvVariables()
10331033
newProjectDir.Delete(true);
10341034
}
10351035

1036-
[DockerSupportsArchFact("linux/arm64")]
1036+
[DockerIsAvailableAndSupportsArchFact("linux/arm64")]
10371037
public void EndToEndMultiArch_Ports()
10381038
{
10391039
string imageName = NewImageName();

0 commit comments

Comments
 (0)