@@ -1433,9 +1433,10 @@ static string[] DecideEntrypoint(string rid, string appName, string workingDir)
1433
1433
}
1434
1434
1435
1435
[ DockerAvailableFact ]
1436
- public async Task CheckErrorMessageWhenSourceRepositoryThrows ( )
1436
+ public async void CheckDownloadErrorMessageWhenSourceRepositoryThrows ( )
1437
1437
{
1438
- ILogger logger = _loggerFactory . CreateLogger ( nameof ( CheckErrorMessageWhenSourceRepositoryThrows ) ) ;
1438
+ var loggerFactory = new TestLoggerFactory ( _testOutput ) ;
1439
+ var logger = loggerFactory . CreateLogger ( nameof ( CheckDownloadErrorMessageWhenSourceRepositoryThrows ) ) ;
1439
1440
string rid = "win-x64" ;
1440
1441
string publishDirectory = BuildLocalApp ( tfm : ToolsetInfo . CurrentTargetFramework , rid : rid ) ;
1441
1442
@@ -1461,24 +1462,39 @@ public async Task CheckErrorMessageWhenSourceRepositoryThrows()
1461
1462
1462
1463
// Load the image into the local registry
1463
1464
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 ] ) ;
1476
1479
1477
1480
static string [ ] DecideEntrypoint ( string rid , string appName , string workingDir )
1478
1481
{
1479
1482
var binary = rid . StartsWith ( "win" , StringComparison . Ordinal ) ? $ "{ appName } .exe" : appName ;
1480
1483
return new [ ] { $ "{ workingDir } /{ binary } " } ;
1481
1484
}
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
+ }
1482
1498
}
1483
1499
1484
1500
[ DockerAvailableFact ( checkContainerdStoreAvailability : true ) ]
0 commit comments