dependabot-nuget 0.258.0 → 0.259.0

Sign up to get free protection for your applications and to get access to all the features.
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,7 +1,3 @@
1
- using System.IO;
2
- using System.Linq;
3
- using System.Threading.Tasks;
4
-
5
1
  using Xunit;
6
2
 
7
3
  namespace NuGetUpdater.Core.Test.Update;
@@ -13,94 +9,111 @@ public partial class UpdateWorkerTests
13
9
  [Fact]
14
10
  public async Task UpdateSingleDependencyInDirsProj()
15
11
  {
16
- await TestUpdateForDirsProj("Newtonsoft.Json", "9.0.1", "13.0.1",
12
+ await TestUpdateForDirsProj("Some.Package", "9.0.1", "13.0.1",
13
+ packages:
14
+ [
15
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
16
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
17
+ ],
17
18
  // initial
18
19
  projectContents: """
19
- <Project Sdk="Microsoft.Build.NoTargets">
20
+ <Project Sdk="Microsoft.Build.NoTargets">
20
21
 
21
- <ItemGroup>
22
- <ProjectReference Include="src/test-project.csproj" />
23
- </ItemGroup>
22
+ <ItemGroup>
23
+ <ProjectReference Include="src/test-project.csproj" />
24
+ </ItemGroup>
24
25
 
25
- </Project>
26
- """,
26
+ </Project>
27
+ """,
27
28
  additionalFiles:
28
29
  [
29
30
  ("src/test-project.csproj",
30
31
  """
31
32
  <Project Sdk="Microsoft.NET.Sdk">
32
33
  <PropertyGroup>
33
- <TargetFramework>netstandard2.0</TargetFramework>
34
+ <TargetFramework>net8.0</TargetFramework>
34
35
  </PropertyGroup>
35
36
 
36
37
  <ItemGroup>
37
- <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
38
+ <PackageReference Include="Some.Package" Version="9.0.1" />
38
39
  </ItemGroup>
39
40
  </Project>
40
41
  """)
41
42
  ],
42
43
  // expected
43
44
  expectedProjectContents: """
44
- <Project Sdk="Microsoft.Build.NoTargets">
45
+ <Project Sdk="Microsoft.Build.NoTargets">
45
46
 
46
- <ItemGroup>
47
- <ProjectReference Include="src/test-project.csproj" />
48
- </ItemGroup>
47
+ <ItemGroup>
48
+ <ProjectReference Include="src/test-project.csproj" />
49
+ </ItemGroup>
49
50
 
50
- </Project>
51
- """,
51
+ </Project>
52
+ """,
52
53
  additionalFilesExpected:
53
54
  [
54
55
  ("src/test-project.csproj",
55
56
  """
56
57
  <Project Sdk="Microsoft.NET.Sdk">
57
58
  <PropertyGroup>
58
- <TargetFramework>netstandard2.0</TargetFramework>
59
+ <TargetFramework>net8.0</TargetFramework>
59
60
  </PropertyGroup>
60
61
 
61
62
  <ItemGroup>
62
- <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
63
+ <PackageReference Include="Some.Package" Version="13.0.1" />
63
64
  </ItemGroup>
64
65
  </Project>
65
66
  """)
66
- ]);
67
+ ]
68
+ );
67
69
  }
68
70
 
69
71
  [Fact]
70
72
  public async Task Update_MissingFileDoesNotThrow()
71
73
  {
72
- await TestUpdateForDirsProj("Newtonsoft.Json", "9.0.1", "13.0.1",
74
+ await TestUpdateForDirsProj("Some.Package", "9.0.1", "13.0.1",
75
+ packages:
76
+ [
77
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
78
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
79
+ ],
73
80
  projectContents: """
74
- <Project Sdk="Microsoft.Build.Traversal">
75
- <ItemGroup>
76
- <ProjectReference Include="private\dirs.proj" />
77
- </ItemGroup>
78
- </Project>
79
- """,
81
+ <Project Sdk="Microsoft.Build.Traversal">
82
+ <ItemGroup>
83
+ <ProjectReference Include="private\dirs.proj" />
84
+ </ItemGroup>
85
+ </Project>
86
+ """,
80
87
  expectedProjectContents: """
81
- <Project Sdk="Microsoft.Build.Traversal">
82
- <ItemGroup>
83
- <ProjectReference Include="private\dirs.proj" />
84
- </ItemGroup>
85
- </Project>
86
- """,
87
- additionalFiles: []);
88
+ <Project Sdk="Microsoft.Build.Traversal">
89
+ <ItemGroup>
90
+ <ProjectReference Include="private\dirs.proj" />
91
+ </ItemGroup>
92
+ </Project>
93
+ """,
94
+ additionalFiles: []
95
+ );
88
96
  }
89
97
 
90
98
  [Fact]
91
99
  public async Task UpdateSingleDependencyInNestedDirsProj()
92
100
  {
93
- await TestUpdateForDirsProj("Newtonsoft.Json", "9.0.1", "13.0.1",
101
+ await TestUpdateForDirsProj("Some.Package", "9.0.1", "13.0.1",
102
+ packages:
103
+ [
104
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
105
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
106
+ ],
94
107
  // initial
95
108
  projectContents: """
96
- <Project Sdk="Microsoft.Build.NoTargets">
109
+ <Project Sdk="Microsoft.Build.NoTargets">
97
110
 
98
- <ItemGroup>
99
- <ProjectReference Include="src/dirs.proj" />
100
- </ItemGroup>
111
+ <ItemGroup>
112
+ <ProjectReference Include="src/dirs.proj" />
113
+ </ItemGroup>
101
114
 
102
- </Project>
103
- """,
115
+ </Project>
116
+ """,
104
117
  additionalFiles:
105
118
  [
106
119
  ("src/dirs.proj",
@@ -117,25 +130,25 @@ public partial class UpdateWorkerTests
117
130
  """
118
131
  <Project Sdk="Microsoft.NET.Sdk">
119
132
  <PropertyGroup>
120
- <TargetFramework>netstandard2.0</TargetFramework>
133
+ <TargetFramework>net8.0</TargetFramework>
121
134
  </PropertyGroup>
122
135
 
123
136
  <ItemGroup>
124
- <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
137
+ <PackageReference Include="Some.Package" Version="9.0.1" />
125
138
  </ItemGroup>
126
139
  </Project>
127
140
  """)
128
141
  ],
129
142
  // expected
130
143
  expectedProjectContents: """
131
- <Project Sdk="Microsoft.Build.NoTargets">
144
+ <Project Sdk="Microsoft.Build.NoTargets">
132
145
 
133
- <ItemGroup>
134
- <ProjectReference Include="src/dirs.proj" />
135
- </ItemGroup>
146
+ <ItemGroup>
147
+ <ProjectReference Include="src/dirs.proj" />
148
+ </ItemGroup>
136
149
 
137
- </Project>
138
- """,
150
+ </Project>
151
+ """,
139
152
  additionalFilesExpected:
140
153
  [
141
154
  ("src/dirs.proj",
@@ -152,31 +165,37 @@ public partial class UpdateWorkerTests
152
165
  """
153
166
  <Project Sdk="Microsoft.NET.Sdk">
154
167
  <PropertyGroup>
155
- <TargetFramework>netstandard2.0</TargetFramework>
168
+ <TargetFramework>net8.0</TargetFramework>
156
169
  </PropertyGroup>
157
170
 
158
171
  <ItemGroup>
159
- <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
172
+ <PackageReference Include="Some.Package" Version="13.0.1" />
160
173
  </ItemGroup>
161
174
  </Project>
162
175
  """)
163
- ]);
176
+ ]
177
+ );
164
178
  }
165
179
 
166
180
  [Fact]
167
181
  public async Task UpdateSingleDependencyInNestedDirsProjUsingWildcard()
168
182
  {
169
- await TestUpdateForDirsProj("Newtonsoft.Json", "9.0.1", "13.0.1",
183
+ await TestUpdateForDirsProj("Some.Package", "9.0.1", "13.0.1",
184
+ packages:
185
+ [
186
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
187
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
188
+ ],
170
189
  // initial
171
190
  projectContents: """
172
- <Project Sdk="Microsoft.Build.NoTargets">
191
+ <Project Sdk="Microsoft.Build.NoTargets">
173
192
 
174
- <ItemGroup>
175
- <ProjectReference Include="src/*.proj" />
176
- </ItemGroup>
193
+ <ItemGroup>
194
+ <ProjectReference Include="src/*.proj" />
195
+ </ItemGroup>
177
196
 
178
- </Project>
179
- """,
197
+ </Project>
198
+ """,
180
199
  additionalFiles:
181
200
  [
182
201
  ("src/dirs.proj",
@@ -193,25 +212,25 @@ public partial class UpdateWorkerTests
193
212
  """
194
213
  <Project Sdk="Microsoft.NET.Sdk">
195
214
  <PropertyGroup>
196
- <TargetFramework>netstandard2.0</TargetFramework>
215
+ <TargetFramework>net8.0</TargetFramework>
197
216
  </PropertyGroup>
198
217
 
199
218
  <ItemGroup>
200
- <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
219
+ <PackageReference Include="Some.Package" Version="9.0.1" />
201
220
  </ItemGroup>
202
221
  </Project>
203
222
  """)
204
223
  ],
205
224
  // expected
206
225
  expectedProjectContents: """
207
- <Project Sdk="Microsoft.Build.NoTargets">
226
+ <Project Sdk="Microsoft.Build.NoTargets">
208
227
 
209
- <ItemGroup>
210
- <ProjectReference Include="src/*.proj" />
211
- </ItemGroup>
228
+ <ItemGroup>
229
+ <ProjectReference Include="src/*.proj" />
230
+ </ItemGroup>
212
231
 
213
- </Project>
214
- """,
232
+ </Project>
233
+ """,
215
234
  additionalFilesExpected:
216
235
  [
217
236
  ("src/dirs.proj",
@@ -228,31 +247,37 @@ public partial class UpdateWorkerTests
228
247
  """
229
248
  <Project Sdk="Microsoft.NET.Sdk">
230
249
  <PropertyGroup>
231
- <TargetFramework>netstandard2.0</TargetFramework>
250
+ <TargetFramework>net8.0</TargetFramework>
232
251
  </PropertyGroup>
233
252
 
234
253
  <ItemGroup>
235
- <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
254
+ <PackageReference Include="Some.Package" Version="13.0.1" />
236
255
  </ItemGroup>
237
256
  </Project>
238
257
  """)
239
- ]);
258
+ ]
259
+ );
240
260
  }
241
261
 
242
262
  [Fact]
243
263
  public async Task UpdateSingleDependencyInNestedDirsProjUsingRecursiveWildcard()
244
264
  {
245
- await TestUpdateForDirsProj("Newtonsoft.Json", "9.0.1", "13.0.1",
265
+ await TestUpdateForDirsProj("Some.Package", "9.0.1", "13.0.1",
266
+ packages:
267
+ [
268
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
269
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
270
+ ],
246
271
  // initial
247
272
  projectContents: """
248
- <Project Sdk="Microsoft.Build.NoTargets">
273
+ <Project Sdk="Microsoft.Build.NoTargets">
249
274
 
250
- <ItemGroup>
251
- <ProjectReference Include="**/*.proj" />
252
- </ItemGroup>
275
+ <ItemGroup>
276
+ <ProjectReference Include="**/*.proj" />
277
+ </ItemGroup>
253
278
 
254
- </Project>
255
- """,
279
+ </Project>
280
+ """,
256
281
  additionalFiles:
257
282
  [
258
283
  ("src/dirs.proj",
@@ -269,25 +294,25 @@ public partial class UpdateWorkerTests
269
294
  """
270
295
  <Project Sdk="Microsoft.NET.Sdk">
271
296
  <PropertyGroup>
272
- <TargetFramework>netstandard2.0</TargetFramework>
297
+ <TargetFramework>net8.0</TargetFramework>
273
298
  </PropertyGroup>
274
299
 
275
300
  <ItemGroup>
276
- <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
301
+ <PackageReference Include="Some.Package" Version="9.0.1" />
277
302
  </ItemGroup>
278
303
  </Project>
279
304
  """)
280
305
  ],
281
306
  // expected
282
307
  expectedProjectContents: """
283
- <Project Sdk="Microsoft.Build.NoTargets">
308
+ <Project Sdk="Microsoft.Build.NoTargets">
284
309
 
285
- <ItemGroup>
286
- <ProjectReference Include="**/*.proj" />
287
- </ItemGroup>
310
+ <ItemGroup>
311
+ <ProjectReference Include="**/*.proj" />
312
+ </ItemGroup>
288
313
 
289
- </Project>
290
- """,
314
+ </Project>
315
+ """,
291
316
  additionalFilesExpected:
292
317
  [
293
318
  ("src/dirs.proj",
@@ -304,15 +329,16 @@ public partial class UpdateWorkerTests
304
329
  """
305
330
  <Project Sdk="Microsoft.NET.Sdk">
306
331
  <PropertyGroup>
307
- <TargetFramework>netstandard2.0</TargetFramework>
332
+ <TargetFramework>net8.0</TargetFramework>
308
333
  </PropertyGroup>
309
334
 
310
335
  <ItemGroup>
311
- <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
336
+ <PackageReference Include="Some.Package" Version="13.0.1" />
312
337
  </ItemGroup>
313
338
  </Project>
314
339
  """)
315
- ]);
340
+ ]
341
+ );
316
342
  }
317
343
 
318
344
  static async Task TestUpdateForDirsProj(
@@ -323,7 +349,8 @@ public partial class UpdateWorkerTests
323
349
  string expectedProjectContents,
324
350
  bool isTransitive = false,
325
351
  (string Path, string Content)[]? additionalFiles = null,
326
- (string Path, string Content)[]? additionalFilesExpected = null)
352
+ (string Path, string Content)[]? additionalFilesExpected = null,
353
+ MockNuGetPackage[]? packages = null)
327
354
  {
328
355
  additionalFiles ??= [];
329
356
  additionalFilesExpected ??= [];
@@ -334,6 +361,8 @@ public partial class UpdateWorkerTests
334
361
 
335
362
  var actualResult = await RunUpdate(testFiles, async (temporaryDirectory) =>
336
363
  {
364
+ await MockNuGetPackagesInDirectory(packages, temporaryDirectory);
365
+
337
366
  var projectPath = Path.Combine(temporaryDirectory, projectFileName);
338
367
  var worker = new UpdaterWorker(new Logger(verbose: true));
339
368
  await worker.RunAsync(temporaryDirectory, projectPath, dependencyName, oldVersion, newVersion, isTransitive);