Skip to content

Commit ea14973

Browse files
surayya-MSbaronfel
authored andcommitted
fix e2e test
1 parent 7256843 commit ea14973

File tree

1 file changed

+32
-14
lines changed

1 file changed

+32
-14
lines changed

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

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
using System.Formats.Tar;
55
using System.Runtime.CompilerServices;
66
using System.Text.Json;
7+
using FakeItEasy;
8+
using Microsoft.Build.Framework;
79
using Microsoft.DotNet.Cli.Utils;
810
using Microsoft.NET.Build.Containers.LocalDaemons;
911
using Microsoft.NET.Build.Containers.Resources;
@@ -1429,9 +1431,10 @@ static string[] DecideEntrypoint(string rid, string appName, string workingDir)
14291431
}
14301432

14311433
[DockerAvailableFact]
1432-
public async Task CheckErrorMessageWhenSourceRepositoryThrows()
1434+
public async void CheckDownloadErrorMessageWhenSourceRepositoryThrows()
14331435
{
1434-
ILogger logger = _loggerFactory.CreateLogger(nameof(CheckErrorMessageWhenSourceRepositoryThrows));
1436+
var loggerFactory = new TestLoggerFactory(_testOutput);
1437+
var logger = loggerFactory.CreateLogger(nameof(CheckDownloadErrorMessageWhenSourceRepositoryThrows));
14351438
string rid = "win-x64";
14361439
string publishDirectory = BuildLocalApp(tfm: ToolsetInfo.CurrentTargetFramework, rid: rid);
14371440

@@ -1457,24 +1460,39 @@ public async Task CheckErrorMessageWhenSourceRepositoryThrows()
14571460

14581461
// Load the image into the local registry
14591462
var sourceReference = new SourceImageReference(registry, "some_random_image", DockerRegistryManager.Net8ImageTag);
1460-
var destinationReference = new DestinationImageReference(registry, NewImageName(), new[] { rid });
1461-
var sawMyException = false;
1462-
try
1463-
{
1464-
await new DockerCli(_loggerFactory).LoadAsync(builtImage, sourceReference, destinationReference, default).ConfigureAwait(false);
1465-
}
1466-
catch (UnableToDownloadFromRepositoryException e)
1467-
{
1468-
sawMyException = true;
1469-
Assert.Contains("The download of the image from repository some_random_image has failed", e.ToString());
1470-
}
1471-
Assert.True(sawMyException);
1463+
string archivePath = Path.Combine(TestSettings.TestArtifactsDirectory, nameof(CheckDownloadErrorMessageWhenSourceRepositoryThrows));
1464+
var destinationReference = new DestinationImageReference(new ArchiveFileRegistry(archivePath), NewImageName(), new[] { rid });
1465+
1466+
(var taskLog, var errors) = SetupTaskLog();
1467+
var telemetry = new Telemetry(sourceReference, destinationReference, taskLog);
1468+
1469+
await ImagePublisher.PublishImageAsync(builtImage, sourceReference, destinationReference, taskLog, telemetry, CancellationToken.None)
1470+
.ConfigureAwait(false);
1471+
1472+
// Assert the error message
1473+
Assert.True(taskLog.HasLoggedErrors);
1474+
Assert.NotNull(errors);
1475+
Assert.Single(errors);
1476+
Assert.Contains("Unable to download image from the repository", errors[0]);
14721477

14731478
static string[] DecideEntrypoint(string rid, string appName, string workingDir)
14741479
{
14751480
var binary = rid.StartsWith("win", StringComparison.Ordinal) ? $"{appName}.exe" : appName;
14761481
return new[] { $"{workingDir}/{binary}" };
14771482
}
1483+
1484+
static (Microsoft.Build.Utilities.TaskLoggingHelper, List<string?> errors) SetupTaskLog()
1485+
{
1486+
// We can use any Task, we just need TaskLoggingHelper
1487+
Tasks.CreateNewImage cni = new();
1488+
List<string?> errors = new();
1489+
IBuildEngine buildEngine = A.Fake<IBuildEngine>();
1490+
A.CallTo(() => buildEngine.LogWarningEvent(A<BuildWarningEventArgs>.Ignored)).Invokes((BuildWarningEventArgs e) => errors.Add(e.Message));
1491+
A.CallTo(() => buildEngine.LogErrorEvent(A<BuildErrorEventArgs>.Ignored)).Invokes((BuildErrorEventArgs e) => errors.Add(e.Message));
1492+
A.CallTo(() => buildEngine.LogMessageEvent(A<BuildMessageEventArgs>.Ignored)).Invokes((BuildMessageEventArgs e) => errors.Add(e.Message));
1493+
cni.BuildEngine = buildEngine;
1494+
return (cni.Log, errors);
1495+
}
14781496
}
14791497

14801498
[DockerAvailableFact(checkContainerdStoreAvailability: true)]

0 commit comments

Comments
 (0)