@@ -13,20 +13,9 @@ public GivenThatWeWantToVerifyNuGetReferenceCompat(ITestOutputHelper log) : base
1313
1414 [ Theory ]
1515 [ InlineData ( "net45" , "Full" , "netstandard1.0 netstandard1.1 net45" , true , true ) ]
16- [ InlineData ( "net451" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 net45 net451" , true , true ) ]
17- [ InlineData ( "net46" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 net45 net451 net46" , true , true ) ]
18- [ InlineData ( "net461" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 net45 net451 net46 net461" , true , true ) ]
1916 [ InlineData ( "net462" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 net45 net451 net46 net461 net462" , true , true ) ]
20- [ InlineData ( "netstandard1.0" , "Full" , "netstandard1.0" , true , true ) ]
21- [ InlineData ( "netstandard1.1" , "Full" , "netstandard1.0 netstandard1.1" , true , true ) ]
22- [ InlineData ( "netstandard1.2" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2" , true , true ) ]
23- [ InlineData ( "netstandard1.3" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3" , true , true ) ]
24- [ InlineData ( "netstandard1.4" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4" , true , true ) ]
25- [ InlineData ( "netstandard1.5" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5" , true , true ) ]
2617 [ InlineData ( "netstandard1.6" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6" , true , true ) ]
2718 [ InlineData ( "netstandard2.0" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0" , true , true ) ]
28- [ InlineData ( "netcoreapp1.0" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netcoreapp1.0" , true , true ) ]
29- [ InlineData ( "netcoreapp1.1" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netcoreapp1.0 netcoreapp1.1" , true , true ) ]
3019 [ InlineData ( "netcoreapp2.0" , "Full" , "netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netcoreapp1.0 netcoreapp1.1 netcoreapp2.0" , true , true ) ]
3120
3221 [ InlineData ( "netstandard2.0" , "OptIn" , "net45 net451 net46 net461" , true , true ) ]
@@ -46,31 +35,53 @@ public void Nuget_reference_compat(string referencerTarget, string testDescripti
4635 return ;
4736 }
4837
49- foreach ( string dependencyTarget in rawDependencyTargets . Split ( ',' , ';' , ' ' ) . ToList ( ) )
50- {
51- TestProject dependencyProject = GetTestProject ( ConstantStringValues . DependencyDirectoryNamePrefix + dependencyTarget . Replace ( '.' , '_' ) , dependencyTarget , true ) ;
52- TestPackageReference dependencyPackageReference = new (
53- dependencyProject . Name ,
54- "1.0.0" ,
55- ConstantStringValues . ConstructNuGetPackageReferencePath ( dependencyProject , identifier : referencerTarget + testDescription + rawDependencyTargets ) ) ;
38+ var dependencyPackageReferences = new List < TestPackageReference > ( ) ;
5639
57- // Skip creating the NuGet package if not running on Windows; or if the NuGet package already exists
58- // https://github.com/dotnet/sdk/issues/335
59- if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) || dependencyProject . BuildsOnNonWindows )
40+ // Process all dependencies in parallel
41+ Parallel . ForEach (
42+ rawDependencyTargets . Split ( ',' , ';' , ' ' ) . Where ( s => ! string . IsNullOrWhiteSpace ( s ) ) ,
43+ new ParallelOptions { MaxDegreeOfParallelism = Environment . ProcessorCount } ,
44+ dependencyTarget =>
6045 {
61- if ( ! dependencyPackageReference . NuGetPackageExists ( ) )
46+ // Create the dependency project and package
47+ TestProject dependencyProject = GetTestProject (
48+ ConstantStringValues . DependencyDirectoryNamePrefix + dependencyTarget . Replace ( '.' , '_' ) ,
49+ dependencyTarget ,
50+ true ) ;
51+
52+ TestPackageReference dependencyPackageReference = new (
53+ dependencyProject . Name ,
54+ "1.0.0" ,
55+ ConstantStringValues . ConstructNuGetPackageReferencePath ( dependencyProject , identifier : referencerTarget + testDescription + rawDependencyTargets ) ) ;
56+
57+ // Create package if it doesn't exist
58+ if ( ! dependencyPackageReference . NuGetPackageExists ( ) &&
59+ ( RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) || dependencyProject . BuildsOnNonWindows ) )
6260 {
63- // Create the NuGet packages
64- var dependencyTestAsset = _testAssetsManager . CreateTestProject ( dependencyProject , identifier : referencerTarget + testDescription + rawDependencyTargets ) ;
65- var dependencyRestoreCommand = dependencyTestAsset . GetRestoreCommand ( Log , relativePath : dependencyProject . Name ) . Execute ( ) . Should ( ) . Pass ( ) ;
66- var dependencyProjectDirectory = Path . Combine ( dependencyTestAsset . TestRoot , dependencyProject . Name ) ;
61+ if ( ! dependencyPackageReference . NuGetPackageExists ( ) )
62+ {
63+ var dependencyTestAsset = _testAssetsManager . CreateTestProject (
64+ dependencyProject ,
65+ identifier : referencerTarget + testDescription + rawDependencyTargets ) ;
66+
67+ dependencyTestAsset . GetRestoreCommand ( Log , relativePath : dependencyProject . Name )
68+ . Execute ( ) . Should ( ) . Pass ( ) ;
69+
70+ var dependencyProjectDirectory = Path . Combine (
71+ dependencyTestAsset . TestRoot ,
72+ dependencyProject . Name ) ;
73+
74+ new PackCommand ( Log , dependencyProjectDirectory )
75+ . Execute ( ) . Should ( ) . Pass ( ) ;
76+ }
6777
68- var dependencyPackCommand = new PackCommand ( Log , dependencyProjectDirectory ) ;
69- var dependencyPackResult = dependencyPackCommand . Execute ( ) . Should ( ) . Pass ( ) ;
7078 }
79+ } ) ;
7180
72- referencerProject . PackageReferences . Add ( dependencyPackageReference ) ;
73- }
81+ // Add all references to the referencer project
82+ foreach ( var dependencyPackageReference in dependencyPackageReferences )
83+ {
84+ referencerProject . PackageReferences . Add ( dependencyPackageReference ) ;
7485 }
7586
7687 // Skip running tests if no NuGet packages are referenced
0 commit comments