dependabot-nuget 0.245.0 → 0.247.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackagesConfigUpdater.cs +42 -7
  3. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/SdkPackageUpdater.cs +164 -90
  4. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +38 -2
  5. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +92 -18
  6. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/NuGetHelper.cs +1 -1
  7. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathHelper.cs +27 -0
  8. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTestBase.cs +115 -14
  9. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/{UpdateWorker.DirsProj.cs → UpdateWorkerTests.DirsProj.cs} +22 -24
  10. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +66 -0
  11. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Sdk.cs +373 -83
  12. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +117 -4
  13. data/lib/dependabot/nuget/cache_manager.rb +9 -3
  14. data/lib/dependabot/nuget/file_fetcher/import_paths_finder.rb +15 -12
  15. data/lib/dependabot/nuget/file_fetcher/sln_project_paths_finder.rb +13 -3
  16. data/lib/dependabot/nuget/file_fetcher.rb +79 -31
  17. data/lib/dependabot/nuget/file_parser/dotnet_tools_json_parser.rb +10 -2
  18. data/lib/dependabot/nuget/file_parser/global_json_parser.rb +10 -2
  19. data/lib/dependabot/nuget/file_parser/packages_config_parser.rb +11 -2
  20. data/lib/dependabot/nuget/file_parser/project_file_parser.rb +140 -45
  21. data/lib/dependabot/nuget/file_parser/property_value_finder.rb +57 -5
  22. data/lib/dependabot/nuget/file_parser.rb +18 -4
  23. data/lib/dependabot/nuget/file_updater/property_value_updater.rb +25 -8
  24. data/lib/dependabot/nuget/file_updater.rb +74 -38
  25. data/lib/dependabot/nuget/http_response_helpers.rb +19 -0
  26. data/lib/dependabot/nuget/metadata_finder.rb +32 -4
  27. data/lib/dependabot/nuget/nuget_client.rb +31 -13
  28. data/lib/dependabot/nuget/requirement.rb +4 -1
  29. data/lib/dependabot/nuget/update_checker/compatibility_checker.rb +26 -15
  30. data/lib/dependabot/nuget/update_checker/dependency_finder.rb +23 -13
  31. data/lib/dependabot/nuget/update_checker/nupkg_fetcher.rb +83 -21
  32. data/lib/dependabot/nuget/update_checker/repository_finder.rb +29 -13
  33. data/lib/dependabot/nuget/update_checker/tfm_finder.rb +2 -2
  34. data/lib/dependabot/nuget/update_checker/version_finder.rb +15 -6
  35. data/lib/dependabot/nuget/update_checker.rb +6 -7
  36. data/lib/dependabot/nuget/version.rb +7 -2
  37. metadata +21 -7
  38. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/SdkPackageUpdaterTests.cs +0 -317
@@ -1,317 +0,0 @@
1
- using System.Collections.Generic;
2
- using System.IO;
3
- using System.Linq;
4
- using System.Threading.Tasks;
5
-
6
- using Xunit;
7
-
8
- namespace NuGetUpdater.Core.Test.Utilities;
9
-
10
- public class SdkPackageUpdaterTests
11
- {
12
- [Theory]
13
- [MemberData(nameof(GetDependencyUpdates))]
14
- public async Task UpdateDependency_UpdatesDependencies((string Path, string Contents)[] startingContents, (string Path, string Contents)[] expectedContents,
15
- string dependencyName, string previousVersion, string newDependencyVersion, bool isTransitive)
16
- {
17
- // Arrange
18
- using var directory = TemporaryDirectory.CreateWithContents(startingContents);
19
- var projectPath = Path.Combine(directory.DirectoryPath, startingContents.First().Path);
20
- var logger = new Logger(verbose: false);
21
-
22
- // Act
23
- await SdkPackageUpdater.UpdateDependencyAsync(directory.DirectoryPath, projectPath, dependencyName, previousVersion, newDependencyVersion, isTransitive, logger);
24
-
25
- // Assert
26
- AssertContentsEqual(expectedContents, directory);
27
- }
28
-
29
- public static IEnumerable<object[]> GetDependencyUpdates()
30
- {
31
- // Simple case
32
- yield return new object[]
33
- {
34
- new[]
35
- {
36
- (Path: "src/Project.csproj", Content: """
37
- <Project Sdk="Microsoft.NET.Sdk">
38
- <PropertyGroup>
39
- <TargetFramework>netstandard2.0</TargetFramework>
40
- </PropertyGroup>
41
- <ItemGroup>
42
- <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
43
- </ItemGroup>
44
- </Project>
45
- """)
46
- }, // starting contents
47
- new[]
48
- {
49
- (Path: "src/Project.csproj", Content: """
50
- <Project Sdk="Microsoft.NET.Sdk">
51
- <PropertyGroup>
52
- <TargetFramework>netstandard2.0</TargetFramework>
53
- </PropertyGroup>
54
- <ItemGroup>
55
- <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
56
- </ItemGroup>
57
- </Project>
58
- """)
59
- }, // expected contents
60
- "Newtonsoft.Json", "12.0.1", "13.0.1", false // isTransitive
61
- };
62
-
63
- // Dependency package has version constraint
64
- yield return
65
- [
66
- new[]
67
- {
68
- (Path: "src/Project/Project.csproj", Content: """
69
- <Project Sdk="Microsoft.NET.Sdk">
70
- <PropertyGroup>
71
- <TargetFramework>netstandard2.0</TargetFramework>
72
- </PropertyGroup>
73
- <ItemGroup>
74
- <PackageReference Include="AWSSDK.S3" Version="3.3.17.3" />
75
- <PackageReference Include="AWSSDK.Core" Version="3.3.21.19" />
76
- </ItemGroup>
77
- </Project>
78
- """),
79
- }, // starting contents
80
- new[]
81
- {
82
- // If a dependency has a version constraint outside of our new-version, we don't update anything
83
- (Path: "src/Project/Project.csproj", Content: """
84
- <Project Sdk="Microsoft.NET.Sdk">
85
- <PropertyGroup>
86
- <TargetFramework>netstandard2.0</TargetFramework>
87
- </PropertyGroup>
88
- <ItemGroup>
89
- <PackageReference Include="AWSSDK.S3" Version="3.3.17.3" />
90
- <PackageReference Include="AWSSDK.Core" Version="3.3.21.19" />
91
- </ItemGroup>
92
- </Project>
93
- """),
94
- }, // expected contents
95
- "AWSSDK.Core",
96
- "3.3.21.19",
97
- "3.7.300.20",
98
- false // isTransitive
99
- ];
100
-
101
- // Dependency project has version constraint
102
- yield return
103
- [
104
- new[]
105
- {
106
- (Path: "src/Project2/Project2.csproj", Content: """
107
- <Project Sdk="Microsoft.NET.Sdk">
108
- <PropertyGroup>
109
- <TargetFramework>netstandard2.0</TargetFramework>
110
- </PropertyGroup>
111
- <ItemGroup>
112
- <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
113
- <ProjectReference Include="../Project/Project.csproj" />
114
- </ItemGroup>
115
- </Project>
116
- """),
117
- (Path: "src/Project/Project.csproj", Content: """
118
- <Project Sdk="Microsoft.NET.Sdk">
119
- <PropertyGroup>
120
- <TargetFramework>netstandard2.0</TargetFramework>
121
- </PropertyGroup>
122
- <ItemGroup>
123
- <PackageReference Include="Newtonsoft.Json" Version="[12.0.1, 13.0.0)" />
124
- </ItemGroup>
125
- </Project>
126
- """),
127
- }, // starting contents
128
- new[]
129
- {
130
- (Path: "src/Project2/Project2.csproj", Content: """
131
- <Project Sdk="Microsoft.NET.Sdk">
132
- <PropertyGroup>
133
- <TargetFramework>netstandard2.0</TargetFramework>
134
- </PropertyGroup>
135
- <ItemGroup>
136
- <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
137
- <ProjectReference Include="../Project/Project.csproj" />
138
- </ItemGroup>
139
- </Project>
140
- """), // starting contents
141
- (Path: "src/Project/Project.csproj", Content: """
142
- <Project Sdk="Microsoft.NET.Sdk">
143
- <PropertyGroup>
144
- <TargetFramework>netstandard2.0</TargetFramework>
145
- </PropertyGroup>
146
- <ItemGroup>
147
- <PackageReference Include="Newtonsoft.Json" Version="[12.0.1, 13.0.0)" />
148
- </ItemGroup>
149
- </Project>
150
- """),
151
- }, // expected contents
152
- "Newtonsoft.Json",
153
- "12.0.1",
154
- "13.0.1",
155
- false // isTransitive
156
- ];
157
-
158
- // Multiple references
159
- yield return
160
- [
161
- new[]
162
- {
163
- (Path: "src/Project.csproj", Content: """
164
- <Project Sdk="Microsoft.NET.Sdk">
165
- <PropertyGroup>
166
- <TargetFramework>netstandard2.0</TargetFramework>
167
- </PropertyGroup>
168
- <ItemGroup>
169
- <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
170
- <PackageReference Include="Newtonsoft.Json">
171
- <Version>12.0.1</Version>
172
- </PackageReference>
173
- </ItemGroup>
174
- </Project>
175
- """)
176
- }, // starting contents
177
- new[]
178
- {
179
- (Path: "src/Project.csproj", Content: """
180
- <Project Sdk="Microsoft.NET.Sdk">
181
- <PropertyGroup>
182
- <TargetFramework>netstandard2.0</TargetFramework>
183
- </PropertyGroup>
184
- <ItemGroup>
185
- <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
186
- <PackageReference Include="Newtonsoft.Json">
187
- <Version>13.0.1</Version>
188
- </PackageReference>
189
- </ItemGroup>
190
- </Project>
191
- """)
192
- }, // expected contents
193
- "Newtonsoft.Json",
194
- "12.0.1",
195
- "13.0.1",
196
- false // isTransitive
197
- ];
198
-
199
- // Make sure we don't update if there are incoherent versions
200
- yield return
201
- [
202
- new[]
203
- {
204
- (Path: "src/Project.csproj", Content: """
205
- <Project Sdk="Microsoft.NET.Sdk">
206
- <PropertyGroup>
207
- <TargetFramework>netcoreapp2.1</TargetFramework>
208
- </PropertyGroup>
209
- <ItemGroup>
210
- <PackageReference Include="Microsoft.Extensions.Primitives" Version="2.2.0" />
211
- <PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" />
212
- <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
213
- <PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
214
- <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" />
215
- <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.2.0" />
216
- <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="2.2.0" />
217
- <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="2.2.0" />
218
- <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
219
- <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="2.2.0" />
220
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="2.2.0" />
221
- <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="2.2.0" />
222
- <PackageReference Include="Microsoft.EntityFrameworkCore.Analyzers" Version="2.2.0" />
223
- <PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="2.2.0" />
224
- <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.0" />
225
- <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
226
- <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
227
- </ItemGroup>
228
- </Project>
229
- """)
230
- }, // starting contents
231
- new[]
232
- {
233
- (Path: "src/Project.csproj", Content: """
234
- <Project Sdk="Microsoft.NET.Sdk">
235
- <PropertyGroup>
236
- <TargetFramework>netcoreapp2.1</TargetFramework>
237
- </PropertyGroup>
238
- <ItemGroup>
239
- <PackageReference Include="Microsoft.Extensions.Primitives" Version="2.2.0" />
240
- <PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" />
241
- <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
242
- <PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
243
- <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" />
244
- <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.2.0" />
245
- <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="2.2.0" />
246
- <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="2.2.0" />
247
- <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
248
- <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="2.2.0" />
249
- <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="2.2.0" />
250
- <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="2.2.0" />
251
- <PackageReference Include="Microsoft.EntityFrameworkCore.Analyzers" Version="2.2.0" />
252
- <PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="2.2.0" />
253
- <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.0" />
254
- <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
255
- <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
256
- </ItemGroup>
257
- </Project>
258
- """)
259
- }, // expected contents
260
- "Microsoft.EntityFrameworkCore.SqlServer",
261
- "2.1.0",
262
- "2.2.0",
263
- false // isTransitive
264
- ];
265
-
266
- // PackageReference with Version as child element
267
- yield return
268
- [
269
- new[]
270
- {
271
- (Path: "src/Project.csproj", Content: """
272
- <Project Sdk="Microsoft.NET.Sdk">
273
- <PropertyGroup>
274
- <TargetFramework>netstandard2.0</TargetFramework>
275
- </PropertyGroup>
276
- <ItemGroup>
277
- <PackageReference Include="Newtonsoft.Json">
278
- <Version>12.0.1</Version>
279
- </PackageReference>
280
- </ItemGroup>
281
- </Project>
282
- """)
283
- }, // starting contents
284
- new[]
285
- {
286
- (Path: "src/Project.csproj", Content: """
287
- <Project Sdk="Microsoft.NET.Sdk">
288
- <PropertyGroup>
289
- <TargetFramework>netstandard2.0</TargetFramework>
290
- </PropertyGroup>
291
- <ItemGroup>
292
- <PackageReference Include="Newtonsoft.Json">
293
- <Version>13.0.1</Version>
294
- </PackageReference>
295
- </ItemGroup>
296
- </Project>
297
- """)
298
- }, // expected contents
299
- "Newtonsoft.Json",
300
- "12.0.1",
301
- "13.0.1",
302
- false // isTransitive
303
- ];
304
- }
305
-
306
- private static void AssertContentsEqual((string Path, string Contents)[] expectedContents, TemporaryDirectory directory)
307
- {
308
- var actualFiles = Directory.GetFiles(directory.DirectoryPath, "*", SearchOption.AllDirectories);
309
- Assert.Equal(expectedContents.Length, actualFiles.Length);
310
- foreach (var (path, contents) in expectedContents)
311
- {
312
- var fullPath = Path.Combine(directory.DirectoryPath, path);
313
- Assert.True(File.Exists(fullPath));
314
- Assert.Equal(contents, File.ReadAllText(fullPath));
315
- }
316
- }
317
- }