@@ -1433,9 +1433,10 @@ static string[] DecideEntrypoint(string rid, string appName, string workingDir)
14331433 }
14341434
14351435 [ DockerAvailableFact ]
1436- public async Task CheckErrorMessageWhenSourceRepositoryThrows ( )
1436+ public async void CheckDownloadErrorMessageWhenSourceRepositoryThrows ( )
14371437 {
1438- ILogger logger = _loggerFactory . CreateLogger ( nameof ( CheckErrorMessageWhenSourceRepositoryThrows ) ) ;
1438+ var loggerFactory = new TestLoggerFactory ( _testOutput ) ;
1439+ var logger = loggerFactory . CreateLogger ( nameof ( CheckDownloadErrorMessageWhenSourceRepositoryThrows ) ) ;
14391440 string rid = "win-x64" ;
14401441 string publishDirectory = BuildLocalApp ( tfm : ToolsetInfo . CurrentTargetFramework , rid : rid ) ;
14411442
@@ -1461,24 +1462,39 @@ public async Task CheckErrorMessageWhenSourceRepositoryThrows()
14611462
14621463 // Load the image into the local registry
14631464 var sourceReference = new SourceImageReference ( registry , "some_random_image" , DockerRegistryManager . Net9ImageTag , null ) ;
1464- var destinationReference = new DestinationImageReference ( registry , NewImageName ( ) , new [ ] { rid } ) ;
1465- var sawMyException = false ;
1466- try
1467- {
1468- await new DockerCli ( _loggerFactory ) . LoadAsync ( builtImage , sourceReference , destinationReference , default ) . ConfigureAwait ( false ) ;
1469- }
1470- catch ( UnableToDownloadFromRepositoryException e )
1471- {
1472- sawMyException = true ;
1473- Assert . Contains ( "The download of the image from repository some_random_image has failed" , e . ToString ( ) ) ;
1474- }
1475- Assert . True ( sawMyException ) ;
1465+ string archivePath = Path . Combine ( TestSettings . TestArtifactsDirectory , nameof ( CheckDownloadErrorMessageWhenSourceRepositoryThrows ) ) ;
1466+ var destinationReference = new DestinationImageReference ( new ArchiveFileRegistry ( archivePath ) , NewImageName ( ) , new [ ] { rid } ) ;
1467+
1468+ ( var taskLog , var errors ) = SetupTaskLog ( ) ;
1469+ var telemetry = new Telemetry ( sourceReference , destinationReference , taskLog ) ;
1470+
1471+ await ImagePublisher . PublishImageAsync ( builtImage , sourceReference , destinationReference , taskLog , telemetry , CancellationToken . None )
1472+ . ConfigureAwait ( false ) ;
1473+
1474+ // Assert the error message
1475+ Assert . True ( taskLog . HasLoggedErrors ) ;
1476+ Assert . NotNull ( errors ) ;
1477+ Assert . Single ( errors ) ;
1478+ Assert . Contains ( "Unable to download image from the repository" , errors [ 0 ] ) ;
14761479
14771480 static string [ ] DecideEntrypoint ( string rid , string appName , string workingDir )
14781481 {
14791482 var binary = rid . StartsWith ( "win" , StringComparison . Ordinal ) ? $ "{ appName } .exe" : appName ;
14801483 return new [ ] { $ "{ workingDir } /{ binary } " } ;
14811484 }
1485+
1486+ static ( Microsoft . Build . Utilities . TaskLoggingHelper , List < string ? > errors ) SetupTaskLog ( )
1487+ {
1488+ // We can use any Task, we just need TaskLoggingHelper
1489+ Tasks . CreateNewImage cni = new ( ) ;
1490+ List < string ? > errors = new ( ) ;
1491+ IBuildEngine buildEngine = A . Fake < IBuildEngine > ( ) ;
1492+ A . CallTo ( ( ) => buildEngine . LogWarningEvent ( A < BuildWarningEventArgs > . Ignored ) ) . Invokes ( ( BuildWarningEventArgs e ) => errors . Add ( e . Message ) ) ;
1493+ A . CallTo ( ( ) => buildEngine . LogErrorEvent ( A < BuildErrorEventArgs > . Ignored ) ) . Invokes ( ( BuildErrorEventArgs e ) => errors . Add ( e . Message ) ) ;
1494+ A . CallTo ( ( ) => buildEngine . LogMessageEvent ( A < BuildMessageEventArgs > . Ignored ) ) . Invokes ( ( BuildMessageEventArgs e ) => errors . Add ( e . Message ) ) ;
1495+ cni . BuildEngine = buildEngine ;
1496+ return ( cni . Log , errors ) ;
1497+ }
14821498 }
14831499
14841500 [ DockerAvailableFact ( checkContainerdStoreAvailability : true ) ]
0 commit comments