dependabot-nuget 0.258.0 → 0.259.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/lib/NuGetUpdater/Directory.Packages.props +2 -0
  3. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs +2 -2
  4. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Discover.cs +255 -191
  5. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +63 -35
  6. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +107 -14
  7. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +9 -5
  8. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathHelper.cs +18 -0
  9. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTestBase.cs +6 -1
  10. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.DotNetToolsJson.cs +6 -2
  11. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.GlobalJson.cs +6 -2
  12. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.PackagesConfig.cs +11 -21
  13. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Proj.cs +95 -0
  14. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs +204 -62
  15. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +64 -45
  16. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/MockNuGetPackage.cs +419 -0
  17. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/NuGetUpdater.Core.Test.csproj +1 -0
  18. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TemporaryDirectory.cs +7 -2
  19. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTestBase.cs +77 -19
  20. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DirsProj.cs +120 -91
  21. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DotNetTools.cs +132 -97
  22. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.GlobalJson.cs +93 -75
  23. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Mixed.cs +45 -42
  24. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +1089 -956
  25. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Sdk.cs +1624 -1291
  26. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +296 -293
  27. data/helpers/lib/NuGetUpdater/global.json +6 -0
  28. data/lib/dependabot/nuget/file_parser.rb +4 -5
  29. data/lib/dependabot/nuget/file_updater.rb +1 -1
  30. data/lib/dependabot/nuget/update_checker/dependency_finder.rb +7 -2
  31. data/lib/dependabot/nuget/update_checker/property_updater.rb +1 -0
  32. data/lib/dependabot/nuget/update_checker/version_finder.rb +2 -3
  33. data/lib/dependabot/nuget/update_checker.rb +1 -0
  34. metadata +8 -5
@@ -1,5 +1,9 @@
1
1
  using System.Collections.Immutable;
2
2
 
3
+ using NuGet.Build.Tasks;
4
+
5
+ using NuGetUpdater.Core.Test.Update;
6
+
3
7
  using Xunit;
4
8
 
5
9
  namespace NuGetUpdater.Core.Test.Utilities;
@@ -15,10 +19,10 @@ public class MSBuildHelperTests : TestBase
15
19
  var projectContents = """
16
20
  <Project>
17
21
  <PropertyGroup>
18
- <TargetFramework>netstandard2.0</TargetFramework>
22
+ <TargetFramework>net8.0</TargetFramework>
19
23
  </PropertyGroup>
20
24
  <ItemGroup>
21
- <PackageReference Include="Newtonsoft.Json" Version="$(PackageVersion1)" />
25
+ <PackageReference Include="Some.Package" Version="$(PackageVersion1)" />
22
26
  </ItemGroup>
23
27
  </Project>
24
28
  """;
@@ -36,10 +40,10 @@ public class MSBuildHelperTests : TestBase
36
40
  Assert.Equal("""
37
41
  <Project>
38
42
  <PropertyGroup>
39
- <TargetFramework>netstandard2.0</TargetFramework>
43
+ <TargetFramework>net8.0</TargetFramework>
40
44
  </PropertyGroup>
41
45
  <ItemGroup>
42
- <PackageReference Include="Newtonsoft.Json" Version="1.1.1" />
46
+ <PackageReference Include="Some.Package" Version="1.1.1" />
43
47
  </ItemGroup>
44
48
  </Project>
45
49
  """, evaluatedValue);
@@ -52,10 +56,10 @@ public class MSBuildHelperTests : TestBase
52
56
  var projectContents = """
53
57
  <Project>
54
58
  <PropertyGroup>
55
- <TargetFramework>netstandard2.0</TargetFramework>
59
+ <TargetFramework>net8.0</TargetFramework>
56
60
  </PropertyGroup>
57
61
  <ItemGroup>
58
- <PackageReference Include="Newtonsoft.Json" Version="$(PackageVersion1)" />
62
+ <PackageReference Include="Some.Package" Version="$(PackageVersion1)" />
59
63
  </ItemGroup>
60
64
  </Project>
61
65
  """;
@@ -125,10 +129,13 @@ public class MSBuildHelperTests : TestBase
125
129
 
126
130
  [Theory]
127
131
  [MemberData(nameof(GetTopLevelPackageDependencyInfosTestData))]
128
- public async Task TopLevelPackageDependenciesCanBeDetermined(TestFile[] buildFileContents, Dependency[] expectedTopLevelDependencies)
132
+ public async Task TopLevelPackageDependenciesCanBeDetermined(TestFile[] buildFileContents, Dependency[] expectedTopLevelDependencies, MockNuGetPackage[] testPackages)
129
133
  {
130
134
  using var testDirectory = new TemporaryDirectory();
131
135
  var buildFiles = new List<ProjectBuildFile>();
136
+
137
+ await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(testPackages, testDirectory.DirectoryPath);
138
+
132
139
  foreach (var (path, content) in buildFileContents)
133
140
  {
134
141
  var fullPath = Path.Combine(testDirectory.DirectoryPath, path);
@@ -144,30 +151,29 @@ public class MSBuildHelperTests : TestBase
144
151
  public async Task AllPackageDependenciesCanBeTraversed()
145
152
  {
146
153
  using var temp = new TemporaryDirectory();
147
- var expectedDependencies = new Dependency[]
148
- {
149
- new("Microsoft.Bcl.AsyncInterfaces", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
150
- new("Microsoft.Extensions.DependencyInjection", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
151
- new("Microsoft.Extensions.DependencyInjection.Abstractions", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
152
- new("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
153
- new("Microsoft.Extensions.Logging", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
154
- new("Microsoft.Extensions.Logging.Abstractions", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
155
- new("Microsoft.Extensions.Options", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
156
- new("Microsoft.Extensions.Primitives", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
157
- new("System.Buffers", "4.5.1", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
158
- new("System.ComponentModel.Annotations", "5.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
159
- new("System.Diagnostics.DiagnosticSource", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
160
- new("System.Memory", "4.5.5", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
161
- new("System.Numerics.Vectors", "4.4.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
162
- new("System.Runtime.CompilerServices.Unsafe", "6.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
163
- new("System.Threading.Tasks.Extensions", "4.5.4", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
154
+ MockNuGetPackage[] testPackages =
155
+ [
156
+ MockNuGetPackage.CreateSimplePackage("Package.A", "1.0.0", "netstandard2.0", [(null, [("Package.B", "2.0.0")])]),
157
+ MockNuGetPackage.CreateSimplePackage("Package.B", "2.0.0", "netstandard2.0", [(null, [("Package.C", "3.0.0")])]),
158
+ MockNuGetPackage.CreateSimplePackage("Package.C", "3.0.0", "netstandard2.0", [(null, [("Package.D", "4.0.0")])]),
159
+ MockNuGetPackage.CreateSimplePackage("Package.D", "4.0.0", "netstandard2.0"),
160
+ ];
161
+ await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(testPackages, temp.DirectoryPath);
162
+
163
+ Dependency[] expectedDependencies =
164
+ [
164
165
  new("NETStandard.Library", "2.0.3", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
165
- };
166
- var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
166
+ new("Package.A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
167
+ new("Package.B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
168
+ new("Package.C", "3.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
169
+ new("Package.D", "4.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
170
+ ];
171
+ Dependency[] actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
167
172
  temp.DirectoryPath,
168
173
  temp.DirectoryPath,
169
174
  "netstandard2.0",
170
- [new Dependency("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown)]);
175
+ [new Dependency("Package.A", "1.0.0", DependencyType.Unknown)]
176
+ );
171
177
  AssertEx.Equal(expectedDependencies, actualDependencies);
172
178
  }
173
179
 
@@ -175,101 +181,126 @@ public class MSBuildHelperTests : TestBase
175
181
  public async Task AllPackageDependencies_DoNotTruncateLongDependencyLists()
176
182
  {
177
183
  using var temp = new TemporaryDirectory();
178
- var expectedDependencies = new Dependency[]
179
- {
180
- new("Castle.Core", "4.4.1", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
181
- new("Microsoft.ApplicationInsights", "2.10.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
182
- new("Microsoft.ApplicationInsights.Agent.Intercept", "2.4.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
183
- new("Microsoft.ApplicationInsights.DependencyCollector", "2.10.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
184
- new("Microsoft.ApplicationInsights.PerfCounterCollector", "2.10.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
185
- new("Microsoft.ApplicationInsights.WindowsServer", "2.10.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
186
- new("Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel", "2.10.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
187
- new("Microsoft.AspNet.TelemetryCorrelation", "1.0.5", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
188
- new("Microsoft.Bcl.AsyncInterfaces", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
189
- new("Microsoft.Extensions.Caching.Abstractions", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
190
- new("Microsoft.Extensions.Caching.Memory", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
191
- new("Microsoft.Extensions.DependencyInjection", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
192
- new("Microsoft.Extensions.DependencyInjection.Abstractions", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
193
- new("Microsoft.Extensions.DiagnosticAdapter", "1.1.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
194
- new("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
195
- new("Microsoft.Extensions.Logging", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
196
- new("Microsoft.Extensions.Logging.Abstractions", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
197
- new("Microsoft.Extensions.Options", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
198
- new("Microsoft.Extensions.PlatformAbstractions", "1.1.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
199
- new("Microsoft.Extensions.Primitives", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
200
- new("Moq", "4.16.1", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
201
- new("MSTest.TestFramework", "2.1.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
202
- new("Newtonsoft.Json", "12.0.1", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
203
- new("System", "4.1.311.2", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
204
- new("System.Buffers", "4.5.1", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
205
- new("System.Collections.Concurrent", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
206
- new("System.Collections.Immutable", "1.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
207
- new("System.Collections.NonGeneric", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
208
- new("System.Collections.Specialized", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
209
- new("System.ComponentModel", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
210
- new("System.ComponentModel.Annotations", "5.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
211
- new("System.ComponentModel.Primitives", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
212
- new("System.ComponentModel.TypeConverter", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
213
- new("System.Core", "3.5.21022.801", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
214
- new("System.Data.Common", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
215
- new("System.Diagnostics.DiagnosticSource", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
216
- new("System.Diagnostics.PerformanceCounter", "4.5.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
217
- new("System.Diagnostics.StackTrace", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
218
- new("System.Dynamic.Runtime", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
219
- new("System.IO.FileSystem.Primitives", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
220
- new("System.Linq", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
221
- new("System.Linq.Expressions", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
222
- new("System.Memory", "4.5.5", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
223
- new("System.Net.WebHeaderCollection", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
224
- new("System.Numerics.Vectors", "4.4.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
225
- new("System.ObjectModel", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
226
- new("System.Private.DataContractSerialization", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
227
- new("System.Reflection.Emit", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
228
- new("System.Reflection.Emit.ILGeneration", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
229
- new("System.Reflection.Emit.Lightweight", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
230
- new("System.Reflection.Metadata", "1.4.1", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
231
- new("System.Reflection.TypeExtensions", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
232
- new("System.Runtime.CompilerServices.Unsafe", "6.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
233
- new("System.Runtime.InteropServices.RuntimeInformation", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
234
- new("System.Runtime.Numerics", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
235
- new("System.Runtime.Serialization.Json", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
236
- new("System.Runtime.Serialization.Primitives", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
237
- new("System.Security.Claims", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
238
- new("System.Security.Cryptography.OpenSsl", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
239
- new("System.Security.Cryptography.Primitives", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
240
- new("System.Security.Principal", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
241
- new("System.Text.RegularExpressions", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
242
- new("System.Threading", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
243
- new("System.Threading.Tasks.Extensions", "4.5.4", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
244
- new("System.Threading.Thread", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
245
- new("System.Threading.ThreadPool", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
246
- new("System.Xml.ReaderWriter", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
247
- new("System.Xml.XDocument", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
248
- new("System.Xml.XmlDocument", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
249
- new("System.Xml.XmlSerializer", "4.3.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
250
- new("Microsoft.ApplicationInsights.Web", "2.10.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
251
- new("MSTest.TestAdapter", "2.1.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
252
- new("NETStandard.Library", "2.0.3", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
253
- };
184
+ MockNuGetPackage[] testPackages =
185
+ [
186
+ MockNuGetPackage.CreateSimplePackage("Package.1A", "1.0.0", "net8.0", [(null, [("Package.1B", "2.0.0")])]),
187
+ MockNuGetPackage.CreateSimplePackage("Package.1B", "2.0.0", "net8.0", [(null, [("Package.1C", "3.0.0")])]),
188
+ MockNuGetPackage.CreateSimplePackage("Package.1C", "3.0.0", "net8.0", [(null, [("Package.1D", "4.0.0")])]),
189
+ MockNuGetPackage.CreateSimplePackage("Package.1D", "4.0.0", "net8.0", [(null, [("Package.1E", "5.0.0")])]),
190
+ MockNuGetPackage.CreateSimplePackage("Package.1E", "5.0.0", "net8.0", [(null, [("Package.1F", "6.0.0")])]),
191
+ MockNuGetPackage.CreateSimplePackage("Package.1F", "6.0.0", "net8.0", [(null, [("Package.1G", "7.0.0")])]),
192
+ MockNuGetPackage.CreateSimplePackage("Package.1G", "7.0.0", "net8.0", [(null, [("Package.1H", "8.0.0")])]),
193
+ MockNuGetPackage.CreateSimplePackage("Package.1H", "8.0.0", "net8.0", [(null, [("Package.1I", "9.0.0")])]),
194
+ MockNuGetPackage.CreateSimplePackage("Package.1I", "9.0.0", "net8.0", [(null, [("Package.1J", "10.0.0")])]),
195
+ MockNuGetPackage.CreateSimplePackage("Package.1J", "10.0.0", "net8.0", [(null, [("Package.1K", "11.0.0")])]),
196
+ MockNuGetPackage.CreateSimplePackage("Package.1K", "11.0.0", "net8.0", [(null, [("Package.1L", "12.0.0")])]),
197
+ MockNuGetPackage.CreateSimplePackage("Package.1L", "12.0.0", "net8.0", [(null, [("Package.1M", "13.0.0")])]),
198
+ MockNuGetPackage.CreateSimplePackage("Package.1M", "13.0.0", "net8.0", [(null, [("Package.1N", "14.0.0")])]),
199
+ MockNuGetPackage.CreateSimplePackage("Package.1N", "14.0.0", "net8.0", [(null, [("Package.1O", "15.0.0")])]),
200
+ MockNuGetPackage.CreateSimplePackage("Package.1O", "15.0.0", "net8.0", [(null, [("Package.1P", "16.0.0")])]),
201
+ MockNuGetPackage.CreateSimplePackage("Package.1P", "16.0.0", "net8.0", [(null, [("Package.1Q", "17.0.0")])]),
202
+ MockNuGetPackage.CreateSimplePackage("Package.1Q", "17.0.0", "net8.0", [(null, [("Package.1R", "18.0.0")])]),
203
+ MockNuGetPackage.CreateSimplePackage("Package.1R", "18.0.0", "net8.0", [(null, [("Package.1S", "19.0.0")])]),
204
+ MockNuGetPackage.CreateSimplePackage("Package.1S", "19.0.0", "net8.0", [(null, [("Package.1T", "20.0.0")])]),
205
+ MockNuGetPackage.CreateSimplePackage("Package.1T", "20.0.0", "net8.0", [(null, [("Package.1U", "21.0.0")])]),
206
+ MockNuGetPackage.CreateSimplePackage("Package.1U", "21.0.0", "net8.0", [(null, [("Package.1V", "22.0.0")])]),
207
+ MockNuGetPackage.CreateSimplePackage("Package.1V", "22.0.0", "net8.0", [(null, [("Package.1W", "23.0.0")])]),
208
+ MockNuGetPackage.CreateSimplePackage("Package.1W", "23.0.0", "net8.0", [(null, [("Package.1X", "24.0.0")])]),
209
+ MockNuGetPackage.CreateSimplePackage("Package.1X", "24.0.0", "net8.0", [(null, [("Package.1Y", "25.0.0")])]),
210
+ MockNuGetPackage.CreateSimplePackage("Package.1Y", "25.0.0", "net8.0", [(null, [("Package.1Z", "26.0.0")])]),
211
+ MockNuGetPackage.CreateSimplePackage("Package.1Z", "26.0.0", "net8.0", [(null, [("Package.2A", "1.0.0")])]),
212
+ MockNuGetPackage.CreateSimplePackage("Package.2A", "1.0.0", "net8.0", [(null, [("Package.2B", "2.0.0")])]),
213
+ MockNuGetPackage.CreateSimplePackage("Package.2B", "2.0.0", "net8.0", [(null, [("Package.2C", "3.0.0")])]),
214
+ MockNuGetPackage.CreateSimplePackage("Package.2C", "3.0.0", "net8.0", [(null, [("Package.2D", "4.0.0")])]),
215
+ MockNuGetPackage.CreateSimplePackage("Package.2D", "4.0.0", "net8.0", [(null, [("Package.2E", "5.0.0")])]),
216
+ MockNuGetPackage.CreateSimplePackage("Package.2E", "5.0.0", "net8.0", [(null, [("Package.2F", "6.0.0")])]),
217
+ MockNuGetPackage.CreateSimplePackage("Package.2F", "6.0.0", "net8.0", [(null, [("Package.2G", "7.0.0")])]),
218
+ MockNuGetPackage.CreateSimplePackage("Package.2G", "7.0.0", "net8.0", [(null, [("Package.2H", "8.0.0")])]),
219
+ MockNuGetPackage.CreateSimplePackage("Package.2H", "8.0.0", "net8.0", [(null, [("Package.2I", "9.0.0")])]),
220
+ MockNuGetPackage.CreateSimplePackage("Package.2I", "9.0.0", "net8.0", [(null, [("Package.2J", "10.0.0")])]),
221
+ MockNuGetPackage.CreateSimplePackage("Package.2J", "10.0.0", "net8.0", [(null, [("Package.2K", "11.0.0")])]),
222
+ MockNuGetPackage.CreateSimplePackage("Package.2K", "11.0.0", "net8.0", [(null, [("Package.2L", "12.0.0")])]),
223
+ MockNuGetPackage.CreateSimplePackage("Package.2L", "12.0.0", "net8.0", [(null, [("Package.2M", "13.0.0")])]),
224
+ MockNuGetPackage.CreateSimplePackage("Package.2M", "13.0.0", "net8.0", [(null, [("Package.2N", "14.0.0")])]),
225
+ MockNuGetPackage.CreateSimplePackage("Package.2N", "14.0.0", "net8.0", [(null, [("Package.2O", "15.0.0")])]),
226
+ MockNuGetPackage.CreateSimplePackage("Package.2O", "15.0.0", "net8.0", [(null, [("Package.2P", "16.0.0")])]),
227
+ MockNuGetPackage.CreateSimplePackage("Package.2P", "16.0.0", "net8.0", [(null, [("Package.2Q", "17.0.0")])]),
228
+ MockNuGetPackage.CreateSimplePackage("Package.2Q", "17.0.0", "net8.0", [(null, [("Package.2R", "18.0.0")])]),
229
+ MockNuGetPackage.CreateSimplePackage("Package.2R", "18.0.0", "net8.0", [(null, [("Package.2S", "19.0.0")])]),
230
+ MockNuGetPackage.CreateSimplePackage("Package.2S", "19.0.0", "net8.0", [(null, [("Package.2T", "20.0.0")])]),
231
+ MockNuGetPackage.CreateSimplePackage("Package.2T", "20.0.0", "net8.0", [(null, [("Package.2U", "21.0.0")])]),
232
+ MockNuGetPackage.CreateSimplePackage("Package.2U", "21.0.0", "net8.0", [(null, [("Package.2V", "22.0.0")])]),
233
+ MockNuGetPackage.CreateSimplePackage("Package.2V", "22.0.0", "net8.0", [(null, [("Package.2W", "23.0.0")])]),
234
+ MockNuGetPackage.CreateSimplePackage("Package.2W", "23.0.0", "net8.0", [(null, [("Package.2X", "24.0.0")])]),
235
+ MockNuGetPackage.CreateSimplePackage("Package.2X", "24.0.0", "net8.0", [(null, [("Package.2Y", "25.0.0")])]),
236
+ MockNuGetPackage.CreateSimplePackage("Package.2Y", "25.0.0", "net8.0", [(null, [("Package.2Z", "26.0.0")])]),
237
+ MockNuGetPackage.CreateSimplePackage("Package.2Z", "26.0.0", "net8.0"),
238
+ ];
239
+ await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(testPackages, temp.DirectoryPath);
240
+
241
+ Dependency[] expectedDependencies =
242
+ [
243
+ new("Package.1A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
244
+ new("Package.1B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
245
+ new("Package.1C", "3.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
246
+ new("Package.1D", "4.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
247
+ new("Package.1E", "5.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
248
+ new("Package.1F", "6.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
249
+ new("Package.1G", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
250
+ new("Package.1H", "8.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
251
+ new("Package.1I", "9.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
252
+ new("Package.1J", "10.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
253
+ new("Package.1K", "11.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
254
+ new("Package.1L", "12.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
255
+ new("Package.1M", "13.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
256
+ new("Package.1N", "14.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
257
+ new("Package.1O", "15.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
258
+ new("Package.1P", "16.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
259
+ new("Package.1Q", "17.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
260
+ new("Package.1R", "18.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
261
+ new("Package.1S", "19.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
262
+ new("Package.1T", "20.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
263
+ new("Package.1U", "21.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
264
+ new("Package.1V", "22.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
265
+ new("Package.1W", "23.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
266
+ new("Package.1X", "24.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
267
+ new("Package.1Y", "25.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
268
+ new("Package.1Z", "26.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
269
+ new("Package.2A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
270
+ new("Package.2B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
271
+ new("Package.2C", "3.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
272
+ new("Package.2D", "4.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
273
+ new("Package.2E", "5.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
274
+ new("Package.2F", "6.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
275
+ new("Package.2G", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
276
+ new("Package.2H", "8.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
277
+ new("Package.2I", "9.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
278
+ new("Package.2J", "10.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
279
+ new("Package.2K", "11.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
280
+ new("Package.2L", "12.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
281
+ new("Package.2M", "13.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
282
+ new("Package.2N", "14.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
283
+ new("Package.2O", "15.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
284
+ new("Package.2P", "16.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
285
+ new("Package.2Q", "17.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
286
+ new("Package.2R", "18.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
287
+ new("Package.2S", "19.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
288
+ new("Package.2T", "20.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
289
+ new("Package.2U", "21.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
290
+ new("Package.2V", "22.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
291
+ new("Package.2W", "23.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
292
+ new("Package.2X", "24.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
293
+ new("Package.2Y", "25.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
294
+ new("Package.2Z", "26.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
295
+ ];
254
296
  var packages = new[]
255
297
  {
256
- new Dependency("System", "4.1.311.2", DependencyType.Unknown),
257
- new Dependency("System.Core", "3.5.21022.801", DependencyType.Unknown),
258
- new Dependency("Moq", "4.16.1", DependencyType.Unknown),
259
- new Dependency("Castle.Core", "4.4.1", DependencyType.Unknown),
260
- new Dependency("MSTest.TestAdapter", "2.1.0", DependencyType.Unknown),
261
- new Dependency("MSTest.TestFramework", "2.1.0", DependencyType.Unknown),
262
- new Dependency("Microsoft.ApplicationInsights", "2.10.0", DependencyType.Unknown),
263
- new Dependency("Microsoft.ApplicationInsights.Agent.Intercept", "2.4.0", DependencyType.Unknown),
264
- new Dependency("Microsoft.ApplicationInsights.DependencyCollector", "2.10.0", DependencyType.Unknown),
265
- new Dependency("Microsoft.ApplicationInsights.PerfCounterCollector", "2.10.0", DependencyType.Unknown),
266
- new Dependency("Microsoft.ApplicationInsights.Web", "2.10.0", DependencyType.Unknown),
267
- new Dependency("Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel", "2.10.0", DependencyType.Unknown),
268
- new Dependency("Microsoft.ApplicationInsights.WindowsServer", "2.10.0", DependencyType.Unknown),
269
- new Dependency("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown),
270
- new Dependency("Newtonsoft.Json", "12.0.1", DependencyType.Unknown)
298
+ new Dependency("Package.1A", "1.0.0", DependencyType.Unknown),
299
+ new Dependency("Package.1R", "18.0.0", DependencyType.Unknown),
300
+ new Dependency("Package.2A", "1.0.0", DependencyType.Unknown),
301
+ new Dependency("Package.2R", "18.0.0", DependencyType.Unknown),
271
302
  };
272
- var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(temp.DirectoryPath, temp.DirectoryPath, "netstandard2.0", packages);
303
+ var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(temp.DirectoryPath, temp.DirectoryPath, "net8.0", packages);
273
304
  for (int i = 0; i < actualDependencies.Length; i++)
274
305
  {
275
306
  var ad = actualDependencies[i];
@@ -284,31 +315,26 @@ public class MSBuildHelperTests : TestBase
284
315
  public async Task AllPackageDependencies_DoNotIncludeUpdateOnlyPackages()
285
316
  {
286
317
  using var temp = new TemporaryDirectory();
287
- var expectedDependencies = new Dependency[]
288
- {
289
- new("Microsoft.Bcl.AsyncInterfaces", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
290
- new("Microsoft.Extensions.DependencyInjection", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
291
- new("Microsoft.Extensions.DependencyInjection.Abstractions", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
292
- new("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
293
- new("Microsoft.Extensions.Logging", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
294
- new("Microsoft.Extensions.Logging.Abstractions", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
295
- new("Microsoft.Extensions.Options", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
296
- new("Microsoft.Extensions.Primitives", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
297
- new("System.Buffers", "4.5.1", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
298
- new("System.ComponentModel.Annotations", "5.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
299
- new("System.Diagnostics.DiagnosticSource", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
300
- new("System.Memory", "4.5.5", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
301
- new("System.Numerics.Vectors", "4.4.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
302
- new("System.Runtime.CompilerServices.Unsafe", "6.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
303
- new("System.Threading.Tasks.Extensions", "4.5.4", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
304
- new("NETStandard.Library", "2.0.3", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
305
- };
318
+ MockNuGetPackage[] testPackages =
319
+ [
320
+ MockNuGetPackage.CreateSimplePackage("Package.A", "1.0.0", "net8.0"),
321
+ MockNuGetPackage.CreateSimplePackage("Package.B", "2.0.0", "net8.0"),
322
+ MockNuGetPackage.CreateSimplePackage("Package.C", "3.0.0", "net8.0"),
323
+ ];
324
+ await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(testPackages, temp.DirectoryPath);
325
+
326
+ Dependency[] expectedDependencies =
327
+ [
328
+ new("Package.A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
329
+ new("Package.B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
330
+ ];
306
331
  var packages = new[]
307
332
  {
308
- new Dependency("Microsoft.Extensions.Http", "7.0.0", DependencyType.Unknown),
309
- new Dependency("Newtonsoft.Json", "12.0.1", DependencyType.Unknown, IsUpdate: true)
333
+ new Dependency("Package.A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
334
+ new Dependency("Package.B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
335
+ new Dependency("Package.C", "3.0.0", DependencyType.Unknown, IsUpdate: true)
310
336
  };
311
- var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(temp.DirectoryPath, temp.DirectoryPath, "netstandard2.0", packages);
337
+ var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(temp.DirectoryPath, temp.DirectoryPath, "net8.0", packages);
312
338
  AssertEx.Equal(expectedDependencies, actualDependencies);
313
339
  }
314
340
 
@@ -344,8 +370,8 @@ public class MSBuildHelperTests : TestBase
344
370
  var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
345
371
  temp.DirectoryPath,
346
372
  temp.DirectoryPath,
347
- "netstandard2.0",
348
- [new Dependency("Newtonsoft.Json", "4.5.11", DependencyType.Unknown)]
373
+ "net8.0",
374
+ [new Dependency("Some.Package", "4.5.11", DependencyType.Unknown)]
349
375
  );
350
376
  }
351
377
  finally
@@ -356,72 +382,6 @@ public class MSBuildHelperTests : TestBase
356
382
  }
357
383
  }
358
384
 
359
- [Fact]
360
- public async Task GetAllPackageDependencies_LocalNuGetRepos_AreCopiedToTempProject()
361
- {
362
- // If we end up using this EnvVar pattern again I think it'd be worth it to abstract it out into an IDisposable.
363
- var nugetPackagesDirectory = Environment.GetEnvironmentVariable("NUGET_PACKAGES");
364
- var nugetHttpCacheDirectory = Environment.GetEnvironmentVariable("NUGET_HTTP_CACHE_PATH");
365
- var logger = new Logger(verbose: true);
366
- try
367
- {
368
- // First create a fake local nuget repository
369
- using var restoreDir = new TemporaryDirectory();
370
-
371
- var restoreNuGetPackagesDirectory = Path.Combine(restoreDir.DirectoryPath, ".nuget", "packages");
372
- Environment.SetEnvironmentVariable("NUGET_PACKAGES", restoreNuGetPackagesDirectory);
373
- var restoreNuGetHttpCacheDirectory = Path.Combine(restoreDir.DirectoryPath, ".nuget", "v3-cache");
374
- Environment.SetEnvironmentVariable("NUGET_HTTP_CACHE_PATH", restoreNuGetHttpCacheDirectory);
375
-
376
- using var temp = new TemporaryDirectory();
377
- using (var restoreProjectTemp = new TemporaryDirectory())
378
- {
379
- // dotnet restore .csproj with things we want
380
- await MSBuildHelper.DependenciesAreCoherentAsync(restoreProjectTemp.DirectoryPath, restoreProjectTemp.DirectoryPath, "netstandard2.0",
381
- [new Dependency("Newtonsoft.Json", "4.5.11", DependencyType.Unknown)], logger);
382
- Assert.True(Directory.Exists(restoreNuGetPackagesDirectory), "packages directory didn't exist");
383
- PathHelper.CopyDirectory(restoreNuGetPackagesDirectory, Path.Combine(temp.DirectoryPath, "local_repo"));
384
- }
385
-
386
- // It is important to have empty NuGet caches for this test, so override them with temp directories.
387
- var tempNuGetPackagesDirectory = Path.Combine(temp.DirectoryPath, ".nuget", "packages");
388
- Environment.SetEnvironmentVariable("NUGET_PACKAGES", tempNuGetPackagesDirectory);
389
- var tempNuGetHttpCacheDirectory = Path.Combine(temp.DirectoryPath, ".nuget", "v3-cache");
390
- Environment.SetEnvironmentVariable("NUGET_HTTP_CACHE_PATH", tempNuGetHttpCacheDirectory);
391
-
392
- // Write the NuGet.config.
393
- await File.WriteAllTextAsync(
394
- Path.Combine(temp.DirectoryPath, "NuGet.Config"), """
395
- <?xml version="1.0" encoding="utf-8"?>
396
- <configuration>
397
- <packageSources>
398
- <clear />
399
- <add key="local-repo" value="local_repo" />
400
- </packageSources>
401
- </configuration>
402
- """);
403
- var expectedDependencies = new Dependency[]
404
- {
405
- new("Newtonsoft.Json", "4.5.11", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
406
- new("NETStandard.Library", "2.0.3", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
407
- };
408
- var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
409
- temp.DirectoryPath,
410
- temp.DirectoryPath,
411
- "netstandard2.0",
412
- [new Dependency("Newtonsoft.Json", "4.5.11", DependencyType.Unknown)]
413
- );
414
- Assert.False(Directory.Exists(tempNuGetHttpCacheDirectory), "The .nuget/.v3-cache directory was created, meaning http was used.");
415
- AssertEx.Equal(expectedDependencies, actualDependencies);
416
- }
417
- finally
418
- {
419
- // Restore the NuGet caches.
420
- Environment.SetEnvironmentVariable("NUGET_PACKAGES", nugetPackagesDirectory);
421
- Environment.SetEnvironmentVariable("NUGET_HTTP_CACHE_PATH", nugetHttpCacheDirectory);
422
- }
423
- }
424
-
425
385
  [Fact]
426
386
  public async Task AllPackageDependenciesCanBeFoundWithNuGetConfig()
427
387
  {
@@ -438,47 +398,38 @@ public class MSBuildHelperTests : TestBase
438
398
  var tempNuGetHttpCacheDirectory = Path.Combine(temp.DirectoryPath, ".nuget", "v3-cache");
439
399
  Environment.SetEnvironmentVariable("NUGET_HTTP_CACHE_PATH", tempNuGetHttpCacheDirectory);
440
400
 
441
- // First validate that we are unable to find dependencies for the package version without a NuGet.config.
442
- var dependenciesNoNuGetConfig = await MSBuildHelper.GetAllPackageDependenciesAsync(
443
- temp.DirectoryPath,
444
- temp.DirectoryPath,
445
- "netstandard2.0",
446
- [new Dependency("Microsoft.CodeAnalysis.Common", "4.8.0-3.23457.5", DependencyType.Unknown)]);
447
- Assert.Equal([], dependenciesNoNuGetConfig);
448
-
449
- // Write the NuGet.config and try again.
450
- await File.WriteAllTextAsync(
451
- Path.Combine(temp.DirectoryPath, "NuGet.Config"), """
452
- <?xml version="1.0" encoding="utf-8"?>
401
+ // create two local package sources with different packages available in each
402
+ string localSource1 = Path.Combine(temp.DirectoryPath, "localSource1");
403
+ Directory.CreateDirectory(localSource1);
404
+ string localSource2 = Path.Combine(temp.DirectoryPath, "localSource2");
405
+ Directory.CreateDirectory(localSource2);
406
+
407
+ // `Package.A` will only live in `localSource1` and will have a dependency on `Package.B` which is only
408
+ // available in `localSource2`
409
+ MockNuGetPackage.CreateSimplePackage("Package.A", "1.0.0", "net8.0", [(null, [("Package.B", "2.0.0")])]).WriteToDirectory(localSource1);
410
+ MockNuGetPackage.CreateSimplePackage("Package.B", "2.0.0", "net8.0").WriteToDirectory(localSource2);
411
+ await File.WriteAllTextAsync(Path.Join(temp.DirectoryPath, "NuGet.Config"), """
453
412
  <configuration>
454
413
  <packageSources>
455
- <clear />
456
- <add key="dotnet-tools" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" />
457
- <add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
414
+ <add key="localSource1" value="./localSource1" />
415
+ <add key="localSource2" value="./localSource2" />
458
416
  </packageSources>
459
417
  </configuration>
460
418
  """);
461
419
 
462
- var expectedDependencies = new Dependency[]
463
- {
464
- new("Microsoft.CodeAnalysis.Common", "4.8.0-3.23457.5", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"]),
465
- new("System.Buffers", "4.5.1", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
466
- new("System.Collections.Immutable", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
467
- new("System.Memory", "4.5.5", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
468
- new("System.Numerics.Vectors", "4.4.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
469
- new("System.Reflection.Metadata", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
470
- new("System.Runtime.CompilerServices.Unsafe", "6.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
471
- new("System.Text.Encoding.CodePages", "7.0.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
472
- new("System.Threading.Tasks.Extensions", "4.5.4", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
473
- new("Microsoft.CodeAnalysis.Analyzers", "3.3.4", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
474
- new("NETStandard.Library", "2.0.3", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
475
- };
476
- var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
420
+ Dependency[] expectedDependencies =
421
+ [
422
+ new("Package.A", "1.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
423
+ new("Package.B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
424
+ ];
425
+
426
+ Dependency[] actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
477
427
  temp.DirectoryPath,
478
428
  temp.DirectoryPath,
479
- "netstandard2.0",
480
- [new Dependency("Microsoft.CodeAnalysis.Common", "4.8.0-3.23457.5", DependencyType.Unknown)]
429
+ "net8.0",
430
+ [new Dependency("Package.A", "1.0.0", DependencyType.Unknown)]
481
431
  );
432
+
482
433
  AssertEx.Equal(expectedDependencies, actualDependencies);
483
434
  }
484
435
  finally
@@ -492,35 +443,48 @@ public class MSBuildHelperTests : TestBase
492
443
  [Fact]
493
444
  public async Task DependencyConflictsCanBeResolved()
494
445
  {
495
- // the package `SpecFlow` was already updated from 3.3.30 to 3.4.3, but this causes a conflict with
496
- // `SpecFlow.Tools.MsBuild.Generation` that needs to be resolved
497
446
  var repoRoot = Directory.CreateTempSubdirectory($"test_{nameof(DependencyConflictsCanBeResolved)}_");
447
+ MockNuGetPackage[] testPackages =
448
+ [
449
+ // some base packages
450
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0"),
451
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "1.1.0", "net8.0"),
452
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "1.2.0", "net8.0"),
453
+ // some packages that are hard-locked to specific versions of the previous package
454
+ MockNuGetPackage.CreateSimplePackage("Some.Other.Package", "1.0.0", "net8.0", [(null, [("Some.Package", "[1.0.0]")])]),
455
+ MockNuGetPackage.CreateSimplePackage("Some.Other.Package", "1.1.0", "net8.0", [(null, [("Some.Package", "[1.1.0]")])]),
456
+ MockNuGetPackage.CreateSimplePackage("Some.Other.Package", "1.2.0", "net8.0", [(null, [("Some.Package", "[1.2.0]")])]),
457
+ ];
458
+ await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(testPackages, repoRoot.FullName);
459
+
460
+ // the package `Some.Package` was already updated from 1.0.0 to 1.2.0, but this causes a conflict with
461
+ // `Some.Other.Package` that needs to be resolved
498
462
  try
499
463
  {
500
464
  var projectPath = Path.Join(repoRoot.FullName, "project.csproj");
501
465
  await File.WriteAllTextAsync(projectPath, """
502
466
  <Project Sdk="Microsoft.NET.Sdk">
503
467
  <PropertyGroup>
504
- <TargetFramework>netstandard2.0</TargetFramework>
468
+ <TargetFramework>net8.0</TargetFramework>
505
469
  </PropertyGroup>
506
470
  <ItemGroup>
507
- <PackageReference Include="SpecFlow" Version="3.4.3" />
508
- <PackageReference Include="SpecFlow.Tools.MsBuild.Generation" Version="3.3.30" />
471
+ <PackageReference Include="Some.Package" Version="1.2.0" />
472
+ <PackageReference Include="Some.Other.Package" Version="1.0.0" />
509
473
  </ItemGroup>
510
474
  </Project>
511
475
  """);
512
476
  var dependencies = new[]
513
477
  {
514
- new Dependency("SpecFlow", "3.4.3", DependencyType.PackageReference),
515
- new Dependency("SpecFlow.Tools.MsBuild.Generation", "3.3.30", DependencyType.PackageReference),
478
+ new Dependency("Some.Package", "1.2.0", DependencyType.PackageReference),
479
+ new Dependency("Some.Other.Package", "1.0.0", DependencyType.PackageReference),
516
480
  };
517
- var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(repoRoot.FullName, projectPath, "netstandard2.0", dependencies, new Logger(true));
481
+ var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(repoRoot.FullName, projectPath, "net8.0", dependencies, new Logger(true));
518
482
  Assert.NotNull(resolvedDependencies);
519
483
  Assert.Equal(2, resolvedDependencies.Length);
520
- Assert.Equal("SpecFlow", resolvedDependencies[0].Name);
521
- Assert.Equal("3.4.3", resolvedDependencies[0].Version);
522
- Assert.Equal("SpecFlow.Tools.MsBuild.Generation", resolvedDependencies[1].Name);
523
- Assert.Equal("3.4.3", resolvedDependencies[1].Version);
484
+ Assert.Equal("Some.Package", resolvedDependencies[0].Name);
485
+ Assert.Equal("1.2.0", resolvedDependencies[0].Version);
486
+ Assert.Equal("Some.Other.Package", resolvedDependencies[1].Name);
487
+ Assert.Equal("1.2.0", resolvedDependencies[1].Version);
524
488
  }
525
489
  finally
526
490
  {
@@ -539,7 +503,7 @@ public class MSBuildHelperTests : TestBase
539
503
  ("project.csproj", """
540
504
  <Project Sdk="Microsoft.NET.Sdk">
541
505
  <ItemGroup>
542
- <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
506
+ <PackageReference Include="Some.Package" Version="12.0.1" />
543
507
  </ItemGroup>
544
508
  </Project>
545
509
  """)
@@ -548,10 +512,14 @@ public class MSBuildHelperTests : TestBase
548
512
  new Dependency[]
549
513
  {
550
514
  new(
551
- "Newtonsoft.Json",
515
+ "Some.Package",
552
516
  "12.0.1",
553
517
  DependencyType.PackageReference,
554
518
  EvaluationResult: new(EvaluationResultType.Success, "12.0.1", "12.0.1", null, null))
519
+ },
520
+ new MockNuGetPackage[]
521
+ {
522
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
555
523
  }
556
524
  ];
557
525
 
@@ -564,7 +532,7 @@ public class MSBuildHelperTests : TestBase
564
532
  ("project.csproj", """
565
533
  <Project Sdk="Microsoft.NET.Sdk">
566
534
  <ItemGroup>
567
- <PackageReference Include="Newtonsoft.Json">
535
+ <PackageReference Include="Some.Package">
568
536
  <Version>12.0.1</Version>
569
537
  </PackageReference>
570
538
  </ItemGroup>
@@ -575,10 +543,14 @@ public class MSBuildHelperTests : TestBase
575
543
  new Dependency[]
576
544
  {
577
545
  new(
578
- "Newtonsoft.Json",
546
+ "Some.Package",
579
547
  "12.0.1",
580
548
  DependencyType.PackageReference,
581
549
  EvaluationResult: new(EvaluationResultType.Success, "12.0.1", "12.0.1", null, null))
550
+ },
551
+ new MockNuGetPackage[]
552
+ {
553
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
582
554
  }
583
555
  ];
584
556
 
@@ -591,10 +563,10 @@ public class MSBuildHelperTests : TestBase
591
563
  ("project.csproj", """
592
564
  <Project Sdk="Microsoft.NET.Sdk">
593
565
  <PropertyGroup>
594
- <NewtonsoftJsonVersion>12.0.1</NewtonsoftJsonVersion>
566
+ <SomePackageVersion>12.0.1</SomePackageVersion>
595
567
  </PropertyGroup>
596
568
  <ItemGroup>
597
- <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
569
+ <PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
598
570
  </ItemGroup>
599
571
  </Project>
600
572
  """)
@@ -603,10 +575,14 @@ public class MSBuildHelperTests : TestBase
603
575
  new Dependency[]
604
576
  {
605
577
  new(
606
- "Newtonsoft.Json",
578
+ "Some.Package",
607
579
  "12.0.1",
608
580
  DependencyType.PackageReference,
609
- new(EvaluationResultType.Success, "$(NewtonsoftJsonVersion)", "12.0.1", "NewtonsoftJsonVersion", null))
581
+ new(EvaluationResultType.Success, "$(SomePackageVersion)", "12.0.1", "SomePackageVersion", null))
582
+ },
583
+ new MockNuGetPackage[]
584
+ {
585
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
610
586
  }
611
587
  ];
612
588
 
@@ -620,11 +596,11 @@ public class MSBuildHelperTests : TestBase
620
596
  <Project Sdk="Microsoft.NET.Sdk">
621
597
  <PropertyGroup>
622
598
  <TargetFramework>netstandard2.0</TargetFramework>
623
- <NewtonsoftJsonVersion>12.0.1</NewtonsoftJsonVersion>
624
- <NewtonsoftJsonVersion Condition="$(PropertyThatDoesNotExist) == 'true'">13.0.1</NewtonsoftJsonVersion>
599
+ <SomePackageVersion>12.0.1</SomePackageVersion>
600
+ <SomePackageVersion Condition="$(PropertyThatDoesNotExist) == 'true'">13.0.1</SomePackageVersion>
625
601
  </PropertyGroup>
626
602
  <ItemGroup>
627
- <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
603
+ <PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
628
604
  </ItemGroup>
629
605
  </Project>
630
606
  """)
@@ -633,10 +609,14 @@ public class MSBuildHelperTests : TestBase
633
609
  new Dependency[]
634
610
  {
635
611
  new(
636
- "Newtonsoft.Json",
612
+ "Some.Package",
637
613
  "12.0.1",
638
614
  DependencyType.PackageReference,
639
- new(EvaluationResultType.Success, "$(NewtonsoftJsonVersion)", "12.0.1", "NewtonsoftJsonVersion", null))
615
+ new(EvaluationResultType.Success, "$(SomePackageVersion)", "12.0.1", "SomePackageVersion", null))
616
+ },
617
+ new MockNuGetPackage[]
618
+ {
619
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
640
620
  }
641
621
  ];
642
622
 
@@ -650,11 +630,11 @@ public class MSBuildHelperTests : TestBase
650
630
  <Project Sdk="Microsoft.NET.Sdk">
651
631
  <PropertyGroup>
652
632
  <TargetFramework>netstandard2.0</TargetFramework>
653
- <NewtonsoftJsonVersion>12.0.1</NewtonsoftJsonVersion>
654
- <NewtonsoftJsonVersion Condition="'$(PropertyThatDoesNotExist)' == 'true'">13.0.1</NewtonsoftJsonVersion>
633
+ <SomePackageVersion>12.0.1</SomePackageVersion>
634
+ <SomePackageVersion Condition="'$(PropertyThatDoesNotExist)' == 'true'">13.0.1</SomePackageVersion>
655
635
  </PropertyGroup>
656
636
  <ItemGroup>
657
- <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
637
+ <PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
658
638
  </ItemGroup>
659
639
  </Project>
660
640
  """)
@@ -663,10 +643,14 @@ public class MSBuildHelperTests : TestBase
663
643
  new Dependency[]
664
644
  {
665
645
  new(
666
- "Newtonsoft.Json",
646
+ "Some.Package",
667
647
  "12.0.1",
668
648
  DependencyType.PackageReference,
669
- new(EvaluationResultType.Success, "$(NewtonsoftJsonVersion)", "12.0.1", "NewtonsoftJsonVersion", null))
649
+ new(EvaluationResultType.Success, "$(SomePackageVersion)", "12.0.1", "SomePackageVersion", null))
650
+ },
651
+ new MockNuGetPackage[]
652
+ {
653
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
670
654
  }
671
655
  };
672
656
 
@@ -680,11 +664,11 @@ public class MSBuildHelperTests : TestBase
680
664
  <Project Sdk="Microsoft.NET.Sdk">
681
665
  <PropertyGroup>
682
666
  <TargetFramework>netstandard2.0</TargetFramework>
683
- <NewtonsoftJsonVersion Condition="$(NewtonsoftJsonVersion) == ''">12.0.1</NewtonsoftJsonVersion>
684
- <NewtonsoftJsonVersion Condition="$(PropertyThatDoesNotExist) == 'true'">13.0.1</NewtonsoftJsonVersion>
667
+ <SomePackageVersion Condition="$(SomePackageVersion) == ''">12.0.1</SomePackageVersion>
668
+ <SomePackageVersion Condition="$(PropertyThatDoesNotExist) == 'true'">13.0.1</SomePackageVersion>
685
669
  </PropertyGroup>
686
670
  <ItemGroup>
687
- <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
671
+ <PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
688
672
  </ItemGroup>
689
673
  </Project>
690
674
  """)
@@ -693,10 +677,14 @@ public class MSBuildHelperTests : TestBase
693
677
  new Dependency[]
694
678
  {
695
679
  new(
696
- "Newtonsoft.Json",
680
+ "Some.Package",
697
681
  "12.0.1",
698
682
  DependencyType.PackageReference,
699
- new(EvaluationResultType.Success, "$(NewtonsoftJsonVersion)", "12.0.1", "NewtonsoftJsonVersion", null))
683
+ new(EvaluationResultType.Success, "$(SomePackageVersion)", "12.0.1", "SomePackageVersion", null))
684
+ },
685
+ new MockNuGetPackage[]
686
+ {
687
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
700
688
  }
701
689
  ];
702
690
 
@@ -710,11 +698,11 @@ public class MSBuildHelperTests : TestBase
710
698
  <Project Sdk="Microsoft.NET.Sdk">
711
699
  <PropertyGroup>
712
700
  <TargetFramework>netstandard2.0</TargetFramework>
713
- <NewtonsoftJsonVersion Condition="'$(NewtonsoftJsonVersion)' == ''">12.0.1</NewtonsoftJsonVersion>
714
- <NewtonsoftJsonVersion Condition="'$(PropertyThatDoesNotExist)' == 'true'">13.0.1</NewtonsoftJsonVersion>
701
+ <SomePackageVersion Condition="'$(SomePackageVersion)' == ''">12.0.1</SomePackageVersion>
702
+ <SomePackageVersion Condition="'$(PropertyThatDoesNotExist)' == 'true'">13.0.1</SomePackageVersion>
715
703
  </PropertyGroup>
716
704
  <ItemGroup>
717
- <PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
705
+ <PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
718
706
  </ItemGroup>
719
707
  </Project>
720
708
  """)
@@ -723,10 +711,14 @@ public class MSBuildHelperTests : TestBase
723
711
  new Dependency[]
724
712
  {
725
713
  new(
726
- "Newtonsoft.Json",
714
+ "Some.Package",
727
715
  "12.0.1",
728
716
  DependencyType.PackageReference,
729
- new(EvaluationResultType.Success, "$(NewtonsoftJsonVersion)", "12.0.1", "NewtonsoftJsonVersion", null))
717
+ new(EvaluationResultType.Success, "$(SomePackageVersion)", "12.0.1", "SomePackageVersion", null))
718
+ },
719
+ new MockNuGetPackage[]
720
+ {
721
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0")
730
722
  }
731
723
  };
732
724
 
@@ -739,18 +731,18 @@ public class MSBuildHelperTests : TestBase
739
731
  ("Packages.props", """
740
732
  <Project>
741
733
  <ItemGroup>
742
- <PackageReference Update="Azure.Identity" Version="1.6.0" />
743
- <PackageReference Update="Microsoft.Data.SqlClient" Version="5.1.4" />
734
+ <PackageReference Update="Package.A" Version="1.6.0" />
735
+ <PackageReference Update="Package.B" Version="5.1.4" />
744
736
  </ItemGroup>
745
737
  </Project>
746
738
  """),
747
739
  ("project.csproj", """
748
740
  <Project Sdk="Microsoft.NET.Sdk">
749
741
  <PropertyGroup>
750
- <TargetFramework>netstandard2.0</TargetFramework>
742
+ <TargetFramework>net8.0</TargetFramework>
751
743
  </PropertyGroup>
752
744
  <ItemGroup>
753
- <PackageReference Include="Azure.Identity" Version="1.6.1" />
745
+ <PackageReference Include="Package.A" Version="1.6.1" />
754
746
  </ItemGroup>
755
747
  </Project>
756
748
  """)
@@ -759,16 +751,22 @@ public class MSBuildHelperTests : TestBase
759
751
  new Dependency[]
760
752
  {
761
753
  new(
762
- "Azure.Identity",
754
+ "Package.A",
763
755
  "1.6.0",
764
756
  DependencyType.PackageReference,
765
757
  EvaluationResult: new(EvaluationResultType.Success, "1.6.0", "1.6.0", null, null)),
766
758
  new(
767
- "Microsoft.Data.SqlClient",
759
+ "Package.B",
768
760
  "5.1.4",
769
761
  DependencyType.PackageReference,
770
762
  EvaluationResult: new(EvaluationResultType.Success, "5.1.4", "5.1.4", null, null),
771
763
  IsUpdate: true),
764
+ },
765
+ new MockNuGetPackage[]
766
+ {
767
+ MockNuGetPackage.CreateSimplePackage("Package.A", "1.6.0", "net8.0"),
768
+ MockNuGetPackage.CreateSimplePackage("Package.A", "1.6.1", "net8.0"),
769
+ MockNuGetPackage.CreateSimplePackage("Package.B", "5.1.4", "net8.0"),
772
770
  }
773
771
  ];
774
772
 
@@ -781,18 +779,18 @@ public class MSBuildHelperTests : TestBase
781
779
  ("project.csproj", """
782
780
  <Project Sdk="Microsoft.NET.Sdk">
783
781
  <PropertyGroup>
784
- <TargetFramework>netstandard2.0</TargetFramework>
782
+ <TargetFramework>net8.0</TargetFramework>
785
783
  </PropertyGroup>
786
784
  <ItemGroup>
787
- <PackageReference Include="Azure.Identity" />
785
+ <PackageReference Include="Package.A" />
788
786
  </ItemGroup>
789
787
  </Project>
790
788
  """),
791
789
  ("Packages.props", """
792
790
  <Project>
793
791
  <ItemGroup>
794
- <PackageReference Update="Azure.Identity" Version="1.6.0" />
795
- <PackageReference Update="Microsoft.Data.SqlClient" Version="5.1.4" />
792
+ <PackageReference Update="Package.A" Version="1.6.0" />
793
+ <PackageReference Update="Package.B" Version="5.1.4" />
796
794
  </ItemGroup>
797
795
  </Project>
798
796
  """)
@@ -801,16 +799,21 @@ public class MSBuildHelperTests : TestBase
801
799
  new Dependency[]
802
800
  {
803
801
  new(
804
- "Azure.Identity",
802
+ "Package.A",
805
803
  "1.6.0",
806
804
  DependencyType.PackageReference,
807
805
  EvaluationResult: new(EvaluationResultType.Success, "1.6.0", "1.6.0", null, null)),
808
806
  new(
809
- "Microsoft.Data.SqlClient",
807
+ "Package.B",
810
808
  "5.1.4",
811
809
  DependencyType.PackageReference,
812
810
  EvaluationResult: new(EvaluationResultType.Success, "5.1.4", "5.1.4", null, null),
813
811
  IsUpdate: true),
812
+ },
813
+ new MockNuGetPackage[]
814
+ {
815
+ MockNuGetPackage.CreateSimplePackage("Package.A", "1.6.0", "net8.0"),
816
+ MockNuGetPackage.CreateSimplePackage("Package.B", "5.1.4", "net8.0"),
814
817
  }
815
818
  ];
816
819
  }