11namespace Microsoft . ComponentDetection . Detectors . Tests ;
2+
23using System . Collections . Generic ;
34using Microsoft . ComponentDetection . Detectors . Pip ;
45using Microsoft . VisualStudio . TestTools . UnitTesting ;
56
67[ TestClass ]
78public class PipDependencySpecifierTests
89{
10+ private static void VerifyPipDependencyParsing (
11+ List < ( string SpecString , PipDependencySpecification ReferenceDependencySpecification ) > testCases ,
12+ bool requiresDist = false )
13+ {
14+ foreach ( var ( specString , referenceDependencySpecification ) in testCases )
15+ {
16+ var dependencySpecifier = new PipDependencySpecification ( specString , requiresDist ) ;
17+
18+ Assert . AreEqual ( referenceDependencySpecification . Name , dependencySpecifier . Name ) ;
19+
20+ for ( var i = 0 ; i < referenceDependencySpecification . DependencySpecifiers . Count ; i ++ )
21+ {
22+ Assert . AreEqual (
23+ referenceDependencySpecification . DependencySpecifiers [ i ] ,
24+ dependencySpecifier . DependencySpecifiers [ i ] ) ;
25+ }
26+ }
27+ }
28+
929 [ TestMethod ]
1030 public void TestPipDependencySpecifierConstruction ( )
1131 {
@@ -14,19 +34,24 @@ public void TestPipDependencySpecifierConstruction()
1434 ( "TestPackage==1.0" , new PipDependencySpecification { Name = "TestPackage" , DependencySpecifiers = new List < string > { "==1.0" } } ) ,
1535 ( "TestPackage>=1.0,!=1.1" , new PipDependencySpecification { Name = "TestPackage" , DependencySpecifiers = new List < string > { ">=1.0" , "!=1.1" } } ) ,
1636 ( "OtherPackage!=1.2,>=1.0,<=1.9,~=1.4" , new PipDependencySpecification { Name = "OtherPackage" , DependencySpecifiers = new List < string > { "!=1.2" , ">=1.0" , "<=1.9" , "~=1.4" } } ) ,
37+ ( "TestPackage[Optional]<3,>=1.0.0" , new PipDependencySpecification { Name = "TestPackage" , DependencySpecifiers = new List < string > { "<3" , ">=1.0.0" } } ) ,
1738 } ;
1839
19- foreach ( var spec in specs )
20- {
21- var ( specString , referenceDependencySpecification ) = spec ;
22- var dependencySpecifier = new PipDependencySpecification ( specString ) ;
40+ VerifyPipDependencyParsing ( specs ) ;
41+ }
2342
24- Assert . AreEqual ( referenceDependencySpecification . Name , dependencySpecifier . Name ) ;
43+ [ TestMethod ]
44+ public void TestPipDependencyRequireDist ( )
45+ {
46+ var specs = new List < ( string , PipDependencySpecification ) >
47+ {
48+ ( "Requires-Dist: TestPackage<1.27.0,>=1.19.5" , new PipDependencySpecification { Name = "TestPackage" , DependencySpecifiers = new List < string > { "<1.27.0" , ">=1.19.5" } } ) ,
49+ ( "Requires-Dist: TestPackage (>=1.0.0) ; sys_platform == \" win32\" " , new PipDependencySpecification { Name = "TestPackage" , DependencySpecifiers = new List < string > { ">=1.0.0" } } ) ,
50+ ( "Requires-Dist: OtherPackage[Optional] (<3,>=1.0.0)" , new PipDependencySpecification { Name = "OtherPackage" , DependencySpecifiers = new List < string > { "<3" , ">=1.0.0" } } ) ,
51+ ( "Requires-Dist: TestPackage (>=3.7.4.3) ; python_version < \" 3.8\" " , new PipDependencySpecification { Name = "TestPackage" , DependencySpecifiers = new List < string > { ">=3.7.4.3" } } ) ,
52+ ( "Requires-Dist: TestPackage ; python_version < \" 3.8\" " , new PipDependencySpecification { Name = "TestPackage" , DependencySpecifiers = new List < string > ( ) } ) ,
53+ } ;
2554
26- for ( var i = 0 ; i < referenceDependencySpecification . DependencySpecifiers . Count ; i ++ )
27- {
28- Assert . AreEqual ( referenceDependencySpecification . DependencySpecifiers [ i ] , dependencySpecifier . DependencySpecifiers [ i ] ) ;
29- }
30- }
55+ VerifyPipDependencyParsing ( specs , true ) ;
3156 }
3257}
0 commit comments