@@ -14,12 +14,12 @@ private string GetFilePath(string fileName)
1414
1515 return filePath ;
1616 }
17-
17+
1818 [ TestMethod ]
1919 public void ParseStandardDirectoryPackagesPropsFile ( )
2020 {
21- string propertyPath = GetFilePath ( "Standard_Directory.Packages.props" ) ;
22-
21+ string propertyPath = GetFilePath ( "Standard_Directory.Packages.props" ) ;
22+
2323 var solutionDirectoryPackagesPropertyLoader =
2424 new SolutionDirectoryPackagesPropertyLoader ( GetFilePath ( propertyPath ) , "NONE" ) ;
2525
@@ -28,59 +28,78 @@ public void ParseStandardDirectoryPackagesPropsFile()
2828
2929 Assert . IsNotNull ( packageVersions ) ;
3030 Assert . AreEqual ( 22 , packageVersions . Count ) ;
31- Assert . AreEqual ( true , versionOverrideEnabled ) ;
32- Assert . AreEqual ( "2.88.6" , packageVersions . First ( pkg => pkg . Name . Equals ( "SkiaSharp.Views.Uno.WinUI" ) ) . Version ) ;
33- Assert . AreEqual ( "4.6.0" , packageVersions . First ( pkg => pkg . Name . Equals ( "Microsoft.CodeAnalysis.CSharp" ) ) . Version ) ;
34- Assert . AreEqual ( "1.1.2-beta1.23357.1" , packageVersions . First ( pkg => pkg . Name . Equals ( "Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit" ) ) . Version ) ;
31+ Assert . AreEqual ( true , versionOverrideEnabled ) ;
32+ Assert . AreEqual ( "2.88.6" , packageVersions . First ( pkg => pkg . Name . Equals ( "SkiaSharp.Views.Uno.WinUI" ) ) . Version ) ;
33+ Assert . AreEqual ( "4.6.0" , packageVersions . First ( pkg => pkg . Name . Equals ( "Microsoft.CodeAnalysis.CSharp" ) ) . Version ) ;
34+ Assert . AreEqual ( "1.1.2-beta1.23357.1" , packageVersions . First ( pkg => pkg . Name . Equals ( "Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit" ) ) . Version ) ;
3535 }
3636
3737 [ TestMethod ]
3838 public void ParseDirectoryPackagesPropsFileWithCpmDisabled ( )
3939 {
4040 string propertyPath = GetFilePath ( "CPM_Disabled_Directory.Packages.props" ) ;
41-
41+
4242 var solutionDirectoryPackagesPropertyLoader =
43- new SolutionDirectoryPackagesPropertyLoader ( GetFilePath ( propertyPath ) , "NONE" ) ;
44-
43+ new SolutionDirectoryPackagesPropertyLoader ( GetFilePath ( propertyPath ) , "NONE" ) ;
44+
4545 StringWriter stringWriter = new StringWriter ( ) ;
4646 Console . SetOut ( stringWriter ) ;
47-
47+
4848 HashSet < PackageId > packageVersions = solutionDirectoryPackagesPropertyLoader . Process ( ) ;
49-
49+
5050 Assert . AreEqual ( 0 , packageVersions . Count ) ;
51- Assert . AreEqual ( "The user has disabled Central Package Management. Will skip parsing over this file\n " , stringWriter . ToString ( ) ) ;
51+ Assert . AreEqual ( "The user has disabled Central Package Management. Will skip parsing over this file\n " , stringWriter . ToString ( ) ) ;
5252 }
5353
5454 [ TestMethod ]
5555 public void ParseDirectoryPackagesPropsFileWithVersionOverrideDisabled ( )
5656 {
5757 string propertyPath = GetFilePath ( "VersionOverride_Disabled_Directory.Packages.props" ) ;
58-
58+
5959 var solutionDirectoryPackagesPropertyLoader =
6060 new SolutionDirectoryPackagesPropertyLoader ( GetFilePath ( propertyPath ) , "NONE" ) ;
61-
61+
6262 bool versionOverrideEnabled = solutionDirectoryPackagesPropertyLoader . GetVersionOverrideEnabled ( ) ;
63-
63+
6464 Assert . AreEqual ( false , versionOverrideEnabled ) ;
6565 }
66-
66+
6767 [ TestMethod ]
6868 public void ParseDirectoryPackagesPropsFileWithGlobalPackageReferences ( )
6969 {
7070 string propertyPath = GetFilePath ( "GlobalPackageReference_Directory.Packages.props" ) ;
71-
71+
7272 var solutionDirectoryPackagesPropertyLoader =
7373 new SolutionDirectoryPackagesPropertyLoader ( GetFilePath ( propertyPath ) , "NONE" ) ;
7474
7575 HashSet < PackageId > packageVersions = solutionDirectoryPackagesPropertyLoader . Process ( ) ;
7676
7777 HashSet < PackageId > globalPackageReferences =
7878 solutionDirectoryPackagesPropertyLoader . GetGlobalPackageReferences ( ) ;
79+
80+ Assert . AreEqual ( 19 , packageVersions . Count ) ;
81+ Assert . AreEqual ( 7 , globalPackageReferences . Count ) ;
82+ Assert . AreEqual ( "1.2.0.507" , globalPackageReferences . First ( pkg => pkg . Name . Equals ( "StyleCop.Analyzers.Unstable" ) ) . Version ) ;
83+ Assert . AreEqual ( "1.1.1" , globalPackageReferences . First ( pkg => pkg . Name . Equals ( "Microsoft.SourceLink.GitHub" ) ) . Version ) ;
84+ }
85+
86+ [ TestMethod ]
87+ public void ParseDirectoryPackagesPropsFileWithDuplicatePackageVersions ( )
88+ {
89+ string propertyPath = GetFilePath ( "Duplicate_PackageVersion_Directory.Packages.props" ) ;
7990
80- Assert . AreEqual ( 19 , packageVersions . Count ) ;
81- Assert . AreEqual ( 7 , globalPackageReferences . Count ) ;
82- Assert . AreEqual ( "1.2.0.507" , globalPackageReferences . First ( pkg => pkg . Name . Equals ( "StyleCop.Analyzers.Unstable" ) ) . Version ) ;
83- Assert . AreEqual ( "1.1.1" , globalPackageReferences . First ( pkg => pkg . Name . Equals ( "Microsoft.SourceLink.GitHub" ) ) . Version ) ;
91+ var solutionDirectoryPackagesPropertyLoader =
92+ new SolutionDirectoryPackagesPropertyLoader ( GetFilePath ( propertyPath ) , "NONE" ) ;
93+
94+ HashSet < PackageId > packages = solutionDirectoryPackagesPropertyLoader . Process ( ) ;
95+
96+ // Confirm there are two package entries for PackageA with different versions
97+ Assert . IsNotNull ( packages ) ;
98+ Assert . AreEqual ( 2 , packages . Count ) ;
99+ var packageAVersions = packages . Where ( pkg => pkg . Name . Equals ( "PackageA" ) ) . ToList ( ) ;
100+ Assert . AreEqual ( 2 , packageAVersions . Count ) ;
101+ Assert . IsTrue ( packageAVersions . Any ( pkg => pkg . Version == "1.0.0" ) ) ;
102+ Assert . IsTrue ( packageAVersions . Any ( pkg => pkg . Version == "2.0.0" ) ) ;
84103 }
85104 }
86105}
0 commit comments