@@ -811,6 +811,67 @@ public async Task RunAsync_WhenSourceMappingMapsToInsecureSource_AndAllowInsecur
811811 File . Exists ( Path . Combine ( installDir , $ "{ id . ToLowerInvariant ( ) } .{ version } .nupkg") ) . Should ( ) . BeTrue ( ) ;
812812 }
813813
814+ [ Theory ]
815+ [ InlineData ( "A" , "a" ) ]
816+ [ InlineData ( "a" , "A" ) ]
817+ [ InlineData ( "SourceA" , "sourcea" ) ]
818+ [ InlineData ( "SOURCEA" , "sourcea" ) ]
819+ public async Task RunAsync_WithVariousSourceMappingCasing_FindsSourceAndSucceeds ( string sourceNameConfig , string sourceNameMapping )
820+ {
821+ // Arrange
822+ using var context = new SimpleTestPathContext ( ) ;
823+ string srcDir = context . PackageSource ;
824+
825+ var id = "Contoso.Casing" ;
826+ var version = "1.0.0" ;
827+
828+ await SimpleTestPackageUtility . CreateFullPackageAsync ( srcDir , id , version ) ;
829+
830+ // Add source using one casing
831+ context . Settings . AddSource ( sourceNameConfig , srcDir ) ;
832+
833+ // Add mapping using different casing
834+ context . Settings . AddPackageSourceMapping ( sourceNameMapping , "Contoso.*" ) ;
835+
836+ var settings = Settings . LoadSettingsGivenConfigPaths ( [ context . Settings . ConfigPath ] ) ;
837+
838+ var args = new PackageDownloadArgs
839+ {
840+ Packages =
841+ [
842+ new PackageWithNuGetVersion
843+ {
844+ Id = id ,
845+ NuGetVersion = NuGetVersion . Parse ( version )
846+ }
847+ ] ,
848+ OutputDirectory = context . WorkingDirectory ,
849+ AllowInsecureConnections = true
850+ } ;
851+
852+ var logger = new Mock < ILoggerWithColor > ( MockBehavior . Loose ) ;
853+
854+ var packageSources = new List < PackageSource >
855+ {
856+ new ( srcDir , sourceNameConfig ) ,
857+ } ;
858+
859+ // Act
860+ var exit = await PackageDownloadRunner . RunAsync (
861+ args ,
862+ logger . Object ,
863+ packageSources ,
864+ settings ,
865+ CancellationToken . None ) ;
866+
867+ // Assert
868+ exit . Should ( ) . Be ( PackageDownloadRunner . ExitCodeSuccess ) ;
869+
870+ var installDir = Path . Combine ( context . WorkingDirectory , id . ToLowerInvariant ( ) , version ) ;
871+ Directory . Exists ( installDir ) . Should ( ) . BeTrue ( ) ;
872+ File . Exists ( Path . Combine ( installDir , $ "{ id . ToLowerInvariant ( ) } .{ version } .nupkg") ) . Should ( ) . BeTrue ( ) ;
873+ }
874+
814875 [ Fact ]
815876 public async Task RunAsync_WhenMappedSourceMissing_LogsVerbose ( )
816877 {
0 commit comments