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