dependabot-nuget 0.304.0 → 0.305.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 (29) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/lib/NuGetUpdater/Directory.Packages.props +5 -5
  3. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/AnalyzeCommand.cs +1 -1
  4. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/CloneCommand.cs +1 -1
  5. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs +2 -2
  6. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/RunCommand.cs +1 -1
  7. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/UpdateCommand.cs +1 -1
  8. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/AnalyzeWorker.cs +1 -1
  9. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +1 -1
  10. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/ProjectBuildFile.cs +3 -1
  11. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/NuGetUpdater.Core.csproj +4 -0
  12. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/JobErrorBase.cs +1 -0
  13. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestTextGenerator.cs +13 -12
  14. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +52 -21
  15. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +13 -2
  16. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdateOperationBase.cs +3 -3
  17. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +1 -1
  18. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +33 -12
  19. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/OpenTelemetryLogger.cs +54 -0
  20. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +77 -0
  21. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestMessageTests.cs +45 -2
  22. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestTextTests.cs +63 -44
  23. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/RunWorkerTests.cs +56 -8
  24. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdatePermittedAndMessageTests.cs +90 -23
  25. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TestBase.cs +1 -1
  26. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackageReferenceUpdaterTests.cs +60 -0
  27. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/LoggerTests.cs +61 -0
  28. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +44 -0
  29. metadata +7 -5
@@ -44,11 +44,13 @@ public class UpdatePermittedAndMessageTests
44
44
  allowedUpdates: [
45
45
  new AllowedUpdate() { DependencyType = DepType.Direct, UpdateType = UpdateType.All }
46
46
  ],
47
+ dependencies: [],
47
48
  existingPrs: [],
48
49
  securityAdvisories: [
49
50
  new Advisory() { DependencyName = "Some.Package", AffectedVersions = [], PatchedVersions = [Requirement.Parse(">= 1.11.0")], UnaffectedVersions = [] }
50
51
  ],
51
- securityUpdatesOnly: false),
52
+ securityUpdatesOnly: false,
53
+ updatingAPullRequest: false),
52
54
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: true),
53
55
  // expectedResult
54
56
  false,
@@ -63,11 +65,13 @@ public class UpdatePermittedAndMessageTests
63
65
  allowedUpdates: [
64
66
  new AllowedUpdate() { DependencyType = DepType.Direct, UpdateType = UpdateType.All }
65
67
  ],
68
+ dependencies: [],
66
69
  existingPrs: [],
67
70
  securityAdvisories: [
68
71
  new Advisory() { DependencyName = "Some.Package", AffectedVersions = [], PatchedVersions = [Requirement.Parse(">= 1.11.0")], UnaffectedVersions = [] }
69
72
  ],
70
- securityUpdatesOnly: true),
73
+ securityUpdatesOnly: true,
74
+ updatingAPullRequest: false),
71
75
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: true),
72
76
  // expectedResult
73
77
  true,
@@ -83,9 +87,11 @@ public class UpdatePermittedAndMessageTests
83
87
  new AllowedUpdate() { DependencyType = DepType.Direct, UpdateType = UpdateType.All },
84
88
  new AllowedUpdate() { DependencyType = DepType.Indirect, UpdateType = UpdateType.Security }
85
89
  ],
90
+ dependencies: [],
86
91
  existingPrs: [],
87
92
  securityAdvisories: [],
88
- securityUpdatesOnly: false),
93
+ securityUpdatesOnly: false,
94
+ updatingAPullRequest: false),
89
95
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
90
96
  // expectedResult
91
97
  true,
@@ -101,9 +107,11 @@ public class UpdatePermittedAndMessageTests
101
107
  new AllowedUpdate() { DependencyType = DepType.Direct, UpdateType = UpdateType.All },
102
108
  new AllowedUpdate() { DependencyType = DepType.Indirect, UpdateType = UpdateType.Security }
103
109
  ],
110
+ dependencies: [],
104
111
  existingPrs: [],
105
112
  securityAdvisories: [],
106
- securityUpdatesOnly: false),
113
+ securityUpdatesOnly: false,
114
+ updatingAPullRequest: false),
107
115
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: true),
108
116
  // expectedResult
109
117
  false,
@@ -119,11 +127,13 @@ public class UpdatePermittedAndMessageTests
119
127
  new AllowedUpdate() { DependencyType = DepType.Direct, UpdateType = UpdateType.All },
120
128
  new AllowedUpdate() { DependencyType = DepType.Indirect, UpdateType = UpdateType.Security }
121
129
  ],
130
+ dependencies: [],
122
131
  existingPrs: [],
123
132
  securityAdvisories: [
124
133
  new Advisory() { DependencyName = "Some.Package", AffectedVersions = [], PatchedVersions = [Requirement.Parse(">= 1.11.0")], UnaffectedVersions = [] }
125
134
  ],
126
- securityUpdatesOnly: false),
135
+ securityUpdatesOnly: false,
136
+ updatingAPullRequest: false),
127
137
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: true),
128
138
  // expectedResult
129
139
  true,
@@ -139,9 +149,11 @@ public class UpdatePermittedAndMessageTests
139
149
  new AllowedUpdate() { DependencyType = DepType.Direct, UpdateType = UpdateType.All },
140
150
  new AllowedUpdate() { DependencyType = DepType.Indirect, UpdateType = UpdateType.Security }
141
151
  ],
152
+ dependencies: [],
142
153
  existingPrs: [],
143
154
  securityAdvisories: [],
144
- securityUpdatesOnly: true),
155
+ securityUpdatesOnly: true,
156
+ updatingAPullRequest: false),
145
157
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
146
158
  // expectedResult
147
159
  false,
@@ -157,11 +169,13 @@ public class UpdatePermittedAndMessageTests
157
169
  new AllowedUpdate() { DependencyType = DepType.Direct, UpdateType = UpdateType.All },
158
170
  new AllowedUpdate() { DependencyType = DepType.Indirect, UpdateType = UpdateType.Security }
159
171
  ],
172
+ dependencies: [],
160
173
  existingPrs: [],
161
174
  securityAdvisories: [
162
175
  new Advisory() { DependencyName = "Some.Package", AffectedVersions = [], PatchedVersions = [Requirement.Parse(">= 1.11.0")], UnaffectedVersions = [] }
163
176
  ],
164
- securityUpdatesOnly: true),
177
+ securityUpdatesOnly: true,
178
+ updatingAPullRequest: false),
165
179
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
166
180
  // expectedResult
167
181
  true,
@@ -177,11 +191,13 @@ public class UpdatePermittedAndMessageTests
177
191
  new AllowedUpdate() { DependencyType = DepType.Direct, UpdateType = UpdateType.All },
178
192
  new AllowedUpdate() { DependencyType = DepType.Indirect, UpdateType = UpdateType.Security }
179
193
  ],
194
+ dependencies: [],
180
195
  existingPrs: [],
181
196
  securityAdvisories: [
182
197
  new Advisory() { DependencyName = "Some.Package", AffectedVersions = [Requirement.Parse("> 1.8.0")], PatchedVersions = [], UnaffectedVersions = [] }
183
198
  ],
184
- securityUpdatesOnly: true),
199
+ securityUpdatesOnly: true,
200
+ updatingAPullRequest: false),
185
201
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
186
202
  // expectedResult
187
203
  false,
@@ -197,11 +213,13 @@ public class UpdatePermittedAndMessageTests
197
213
  new AllowedUpdate() { DependencyType = DepType.Direct, UpdateType = UpdateType.All },
198
214
  new AllowedUpdate() { DependencyType = DepType.Indirect, UpdateType = UpdateType.Security }
199
215
  ],
216
+ dependencies: [],
200
217
  existingPrs: [],
201
218
  securityAdvisories: [
202
219
  new Advisory() { DependencyName = "Some.Package", AffectedVersions = [Requirement.Parse("< 1.8.0"), Requirement.Parse("> 1.8.0")], PatchedVersions = [], UnaffectedVersions = [] }
203
220
  ],
204
- securityUpdatesOnly: true),
221
+ securityUpdatesOnly: true,
222
+ updatingAPullRequest: false),
205
223
  new Dependency("Some.Package", "1.8.1", DependencyType.PackageReference, IsTransitive: false),
206
224
  // expectedResult
207
225
  true,
@@ -216,9 +234,11 @@ public class UpdatePermittedAndMessageTests
216
234
  allowedUpdates: [
217
235
  new AllowedUpdate() { DependencyName = "Some.Package" }
218
236
  ],
237
+ dependencies: [],
219
238
  existingPrs: [],
220
239
  securityAdvisories: [],
221
- securityUpdatesOnly: false),
240
+ securityUpdatesOnly: false,
241
+ updatingAPullRequest: false),
222
242
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
223
243
  // expectedResult
224
244
  true,
@@ -233,9 +253,11 @@ public class UpdatePermittedAndMessageTests
233
253
  allowedUpdates: [
234
254
  new AllowedUpdate() { DependencyName = "Some.*" }
235
255
  ],
256
+ dependencies: [],
236
257
  existingPrs: [],
237
258
  securityAdvisories: [],
238
- securityUpdatesOnly: false),
259
+ securityUpdatesOnly: false,
260
+ updatingAPullRequest: false),
239
261
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
240
262
  // expectedResult
241
263
  true,
@@ -250,9 +272,11 @@ public class UpdatePermittedAndMessageTests
250
272
  allowedUpdates: [
251
273
  new AllowedUpdate() { DependencyName = "Unrelated.Package" }
252
274
  ],
275
+ dependencies: [],
253
276
  existingPrs: [],
254
277
  securityAdvisories: [],
255
- securityUpdatesOnly: false),
278
+ securityUpdatesOnly: false,
279
+ updatingAPullRequest: false),
256
280
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
257
281
  // expectedResult
258
282
  false,
@@ -267,9 +291,11 @@ public class UpdatePermittedAndMessageTests
267
291
  allowedUpdates: [
268
292
  new AllowedUpdate() { DependencyName = "Some" }
269
293
  ],
294
+ dependencies: [],
270
295
  existingPrs: [],
271
296
  securityAdvisories: [],
272
- securityUpdatesOnly: false),
297
+ securityUpdatesOnly: false,
298
+ updatingAPullRequest: false),
273
299
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
274
300
  // expectedResult
275
301
  false,
@@ -284,9 +310,11 @@ public class UpdatePermittedAndMessageTests
284
310
  allowedUpdates: [
285
311
  new AllowedUpdate() { DependencyName = "Unrelated.*" }
286
312
  ],
313
+ dependencies: [],
287
314
  existingPrs: [],
288
315
  securityAdvisories: [],
289
- securityUpdatesOnly: false),
316
+ securityUpdatesOnly: false,
317
+ updatingAPullRequest: false),
290
318
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
291
319
  // expectedResult
292
320
  false,
@@ -302,9 +330,11 @@ public class UpdatePermittedAndMessageTests
302
330
  new AllowedUpdate() { DependencyName = "Unrelated.Package" },
303
331
  new AllowedUpdate() { UpdateType = UpdateType.Security }
304
332
  ],
333
+ dependencies: [],
305
334
  existingPrs: [],
306
335
  securityAdvisories: [],
307
- securityUpdatesOnly: false),
336
+ securityUpdatesOnly: false,
337
+ updatingAPullRequest: false),
308
338
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
309
339
  // expectedResult
310
340
  false,
@@ -319,11 +349,13 @@ public class UpdatePermittedAndMessageTests
319
349
  allowedUpdates: [
320
350
  new AllowedUpdate() { DependencyName = "Unrelated.Package"}, new AllowedUpdate(){ UpdateType = UpdateType.Security }
321
351
  ],
352
+ dependencies: [],
322
353
  existingPrs: [],
323
354
  securityAdvisories: [
324
355
  new Advisory() { DependencyName = "Some.Package", AffectedVersions = [], PatchedVersions = [Requirement.Parse(">= 1.11.0")], UnaffectedVersions = [] }
325
356
  ],
326
- securityUpdatesOnly: false),
357
+ securityUpdatesOnly: false,
358
+ updatingAPullRequest: false),
327
359
  new Dependency("Some.Package", "1.8.0", DependencyType.PackageReference, IsTransitive: false),
328
360
  // expectedResult
329
361
  true,
@@ -338,11 +370,13 @@ public class UpdatePermittedAndMessageTests
338
370
  allowedUpdates: [
339
371
  new AllowedUpdate() { UpdateType = UpdateType.Security }
340
372
  ],
373
+ dependencies: [],
341
374
  existingPrs: [],
342
375
  securityAdvisories: [
343
376
  new Advisory() { DependencyName = "Some.Package", AffectedVersions = [Requirement.Parse("1.0.0")], PatchedVersions = [Requirement.Parse("1.1.0")] }
344
377
  ],
345
- securityUpdatesOnly: true),
378
+ securityUpdatesOnly: true,
379
+ updatingAPullRequest: false),
346
380
  new Dependency("Some.Package", "1.1.0", DependencyType.PackageReference),
347
381
  // expectedResult
348
382
  false,
@@ -357,34 +391,67 @@ public class UpdatePermittedAndMessageTests
357
391
  allowedUpdates: [
358
392
  new AllowedUpdate() { UpdateType = UpdateType.Security }
359
393
  ],
394
+ dependencies: [],
360
395
  existingPrs: [
361
396
  new PullRequest() { Dependencies = [new PullRequestDependency() { DependencyName = "Some.Package", DependencyVersion = NuGetVersion.Parse("1.2.0") }] }
362
397
  ],
363
398
  securityAdvisories: [
364
399
  new Advisory() { DependencyName = "Some.Package", AffectedVersions = [Requirement.Parse("1.1.0")] }
365
400
  ],
366
- securityUpdatesOnly: true),
401
+ securityUpdatesOnly: true,
402
+ updatingAPullRequest: false),
367
403
  new Dependency("Some.Package", "1.1.0", DependencyType.PackageReference),
368
404
  // expectedResult
369
405
  false,
370
406
  // expectedMessage
371
407
  new PullRequestExistsForLatestVersion("Some.Package", "1.2.0")
372
408
  ];
409
+
410
+ // security job, updating existing => do update
411
+ yield return
412
+ [
413
+ CreateJob(
414
+ allowedUpdates: [
415
+ new AllowedUpdate() { UpdateType = UpdateType.All, DependencyType = DepType.Direct }
416
+ ],
417
+ dependencies: ["Some.Package"],
418
+ existingPrs: [
419
+ new PullRequest() { Dependencies = [new PullRequestDependency() { DependencyName = "Some.Package", DependencyVersion = NuGetVersion.Parse("1.1.0") }] }
420
+ ],
421
+ securityAdvisories: [
422
+ new Advisory() { DependencyName = "Some.Package", AffectedVersions = [Requirement.Parse(">= 1.0.0, < 1.1.0")] }
423
+ ],
424
+ securityUpdatesOnly: true,
425
+ updatingAPullRequest: true),
426
+ new Dependency("Some.Package", "1.0.0", DependencyType.PackageReference),
427
+ // expectedResult
428
+ true,
429
+ // expectedMessage
430
+ null
431
+ ];
373
432
  }
374
433
 
375
- private static Job CreateJob(AllowedUpdate[] allowedUpdates, PullRequest[] existingPrs, Advisory[] securityAdvisories, bool securityUpdatesOnly)
434
+ private static Job CreateJob(
435
+ ImmutableArray<AllowedUpdate> allowedUpdates,
436
+ ImmutableArray<string> dependencies,
437
+ ImmutableArray<PullRequest> existingPrs,
438
+ ImmutableArray<Advisory> securityAdvisories,
439
+ bool securityUpdatesOnly,
440
+ bool updatingAPullRequest)
376
441
  {
377
442
  return new Job()
378
443
  {
379
- AllowedUpdates = allowedUpdates.ToImmutableArray(),
380
- ExistingPullRequests = existingPrs.ToImmutableArray(),
381
- SecurityAdvisories = securityAdvisories.ToImmutableArray(),
444
+ AllowedUpdates = allowedUpdates,
445
+ Dependencies = dependencies,
446
+ ExistingPullRequests = existingPrs,
447
+ SecurityAdvisories = securityAdvisories,
382
448
  SecurityUpdatesOnly = securityUpdatesOnly,
383
449
  Source = new()
384
450
  {
385
451
  Provider = "nuget",
386
452
  Repo = "test/repo",
387
- }
453
+ },
454
+ UpdatingAPullRequest = updatingAPullRequest,
388
455
  };
389
456
  }
390
457
  }
@@ -11,7 +11,7 @@ namespace NuGetUpdater.Core.Test
11
11
  {
12
12
  protected TestBase()
13
13
  {
14
- MSBuildHelper.RegisterMSBuild(Environment.CurrentDirectory, Environment.CurrentDirectory);
14
+ MSBuildHelper.RegisterMSBuild(Environment.CurrentDirectory, Environment.CurrentDirectory, new TestLogger());
15
15
  }
16
16
 
17
17
  protected static void ValidateError(JobErrorBase expected, JobErrorBase? actual)
@@ -11,6 +11,66 @@ namespace NuGetUpdater.Core.Test.Update;
11
11
 
12
12
  public class PackageReferenceUpdaterTests
13
13
  {
14
+ [Fact]
15
+ public async Task DirectBuildFileChangesAreMaintainedWhenPinningTransitiveDependency()
16
+ {
17
+ // arrange
18
+ using var tempDir = await TemporaryDirectory.CreateWithContentsAsync([("project.csproj", """
19
+ <Project Sdk="Microsoft.NET.Sdk">
20
+ <PropertyGroup>
21
+ <TargetFramework>net9.0</TargetFramework>
22
+ </PropertyGroup>
23
+ <ItemGroup>
24
+ <PackageReference Include="Completely.Different.Package" Version="1.0.0" />
25
+ <PackageReference Include="Some.Package" Version="1.0.0" />
26
+ </ItemGroup>
27
+ </Project>
28
+ """)]);
29
+ var packages = new[]
30
+ {
31
+ MockNuGetPackage.CreateSimplePackage("Completely.Different.Package", "1.0.0", "net9.0"),
32
+ MockNuGetPackage.CreateSimplePackage("Completely.Different.Package", "2.0.0", "net9.0"),
33
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net9.0", [(null, [("Transitive.Package", "1.0.0")])]),
34
+ MockNuGetPackage.CreateSimplePackage("Transitive.Package", "1.0.0", "net9.0"),
35
+ MockNuGetPackage.CreateSimplePackage("Transitive.Package", "2.0.0", "net9.0"),
36
+ };
37
+ await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(packages, tempDir.DirectoryPath);
38
+ var fullProjectPath = Path.Combine(tempDir.DirectoryPath, "project.csproj");
39
+ var buildFile = ProjectBuildFile.Open(tempDir.DirectoryPath, fullProjectPath);
40
+ var experimentsManager = new ExperimentsManager();
41
+
42
+ // act
43
+ // pin transitive dependency
44
+ var updatedFiles = await PackageReferenceUpdater.UpdateTransitiveDependencyAsync(
45
+ tempDir.DirectoryPath,
46
+ fullProjectPath,
47
+ "Transitive.Package",
48
+ "2.0.0",
49
+ [buildFile],
50
+ experimentsManager,
51
+ new TestLogger());
52
+
53
+ // subsequent update should not overwrite previous change
54
+ PackageReferenceUpdater.TryUpdateDependencyVersion([buildFile], "Completely.Different.Package", "1.0.0", "2.0.0", new TestLogger());
55
+
56
+ // assert
57
+ await buildFile.SaveAsync();
58
+ var actualContents = await File.ReadAllTextAsync(fullProjectPath);
59
+ var expectedContents = """
60
+ <Project Sdk="Microsoft.NET.Sdk">
61
+ <PropertyGroup>
62
+ <TargetFramework>net9.0</TargetFramework>
63
+ </PropertyGroup>
64
+ <ItemGroup>
65
+ <PackageReference Include="Completely.Different.Package" Version="2.0.0" />
66
+ <PackageReference Include="Some.Package" Version="1.0.0" />
67
+ <PackageReference Include="Transitive.Package" Version="2.0.0" />
68
+ </ItemGroup>
69
+ </Project>
70
+ """;
71
+ Assert.Equal(expectedContents, actualContents);
72
+ }
73
+
14
74
  [Theory]
15
75
  [MemberData(nameof(ComputeUpdateOperationsTestData))]
16
76
  public async Task ComputeUpdateOperations
@@ -0,0 +1,61 @@
1
+ using System;
2
+ using System.Collections.Generic;
3
+ using System.Linq;
4
+ using System.Text;
5
+ using System.Threading.Tasks;
6
+
7
+ using Xunit;
8
+ using Xunit.Abstractions;
9
+ using Xunit.Sdk;
10
+
11
+ namespace NuGetUpdater.Core.Test.Utilities;
12
+
13
+ public class LoggerTests
14
+ {
15
+ [Fact]
16
+ public void OpenTelemetryToConsoleTest()
17
+ {
18
+ var outputBuilder = new StringBuilder();
19
+ var writer = new StringWriter(outputBuilder);
20
+
21
+ var originalOut = Console.Out;
22
+ var originalError = Console.Error;
23
+ Console.SetOut(writer);
24
+ Console.SetError(writer);
25
+ try
26
+ {
27
+ var logger = new OpenTelemetryLogger();
28
+ logger.Info("Hello world");
29
+ // The required console output is supposed to be YYYY/MM/DD HH:MM:SS INFO [Text]
30
+ Assert.Matches(@"^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2} INFO Hello world", outputBuilder.ToString());
31
+ }
32
+ finally
33
+ {
34
+ Console.SetOut(originalOut);
35
+ Console.SetOut(originalError);
36
+ }
37
+ }
38
+
39
+ [Fact]
40
+ public void LogRaw_ShouldStreamLogsIndividually()
41
+ {
42
+ var consoleOutput = new StringWriter();
43
+ Console.SetOut(consoleOutput);
44
+
45
+ var logger = new OpenTelemetryLogger();
46
+
47
+ var testMessage1 = "Log message 1";
48
+ var testMessage2 = "Log message 2";
49
+
50
+ logger.LogRaw(testMessage1);
51
+ string output = consoleOutput.ToString();
52
+ Assert.Contains(testMessage1, output);
53
+
54
+
55
+ logger.LogRaw(testMessage2);
56
+ output = consoleOutput.ToString();
57
+ Assert.Contains(testMessage2, output);
58
+ }
59
+
60
+
61
+ }
@@ -128,6 +128,50 @@ public class MSBuildHelperTests : TestBase
128
128
  }
129
129
  }
130
130
 
131
+ [Fact]
132
+ public async Task IntermediatePropsAndTargetsAreExcludedFromBuildFileDiscovery()
133
+ {
134
+ // arrange
135
+ var repoFiles = new[]
136
+ {
137
+ ("project.csproj", """
138
+ <Project Sdk="Microsoft.NET.Sdk">
139
+ <PropertyGroup>
140
+ <TargetFramework>net9.0</TargetFramework>
141
+ </PropertyGroup>
142
+ <Import Project="SomeFile.props" />
143
+ <ItemGroup>
144
+ <PackageReference Include="Some.Package" Version="1.0.0" />
145
+ </ItemGroup>
146
+ </Project>
147
+ """),
148
+ ("global.json", "{}"),
149
+ ("Directory.Build.props", "<Project />"),
150
+ ("Directory.Build.targets", "<Project />"),
151
+ ("SomeFile.props", "<Project />"),
152
+ // these simulate a direct discovery operation having previously been performed
153
+ ("obj/project.csproj.nuget.g.props", "<Project />"),
154
+ ("obj/project.csproj.nuget.g.targets", "<Project />"),
155
+ };
156
+ using var tempDir = await TemporaryDirectory.CreateWithContentsAsync(repoFiles);
157
+ var fullProjectPath = Path.Combine(tempDir.DirectoryPath, "project.csproj");
158
+ await UpdateWorkerTestBase.MockNuGetPackagesInDirectory([], tempDir.DirectoryPath);
159
+
160
+ // act
161
+ var (buildFiles, _tfms) = await MSBuildHelper.LoadBuildFilesAndTargetFrameworksAsync(tempDir.DirectoryPath, fullProjectPath);
162
+
163
+ // assert
164
+ var actualBuildFilePaths = buildFiles.Select(f => Path.GetRelativePath(tempDir.DirectoryPath, f.Path).NormalizePathToUnix()).ToArray();
165
+ var expectedBuildFilePaths = new[]
166
+ {
167
+ "project.csproj",
168
+ "Directory.Build.props",
169
+ "SomeFile.props",
170
+ "Directory.Build.targets",
171
+ };
172
+ AssertEx.Equal(expectedBuildFilePaths, actualBuildFilePaths);
173
+ }
174
+
131
175
  [Theory]
132
176
  [MemberData(nameof(GetTopLevelPackageDependencyInfosTestData))]
133
177
  public async Task TopLevelPackageDependenciesCanBeDetermined(TestFile[] buildFileContents, Dependency[] expectedTopLevelDependencies, MockNuGetPackage[] testPackages)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-nuget
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.304.0
4
+ version: 0.305.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-03 00:00:00.000000000 Z
11
+ date: 2025-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dependabot-common
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.304.0
19
+ version: 0.305.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.304.0
26
+ version: 0.305.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubyzip
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -383,6 +383,7 @@ files:
383
383
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/EOLHandlingTests.cs
384
384
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/JsonHelperTests.cs
385
385
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/LinuxOnlyAttribute.cs
386
+ - helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/LoggerTests.cs
386
387
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs
387
388
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/PathHelperTests.cs
388
389
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/ProjectHelperTests.cs
@@ -514,6 +515,7 @@ files:
514
515
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/JsonHelper.cs
515
516
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs
516
517
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/NuGetHelper.cs
518
+ - helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/OpenTelemetryLogger.cs
517
519
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathComparer.cs
518
520
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathHelper.cs
519
521
  - helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ProcessExtensions.cs
@@ -550,7 +552,7 @@ licenses:
550
552
  - MIT
551
553
  metadata:
552
554
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
553
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.304.0
555
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.305.0
554
556
  post_install_message:
555
557
  rdoc_options: []
556
558
  require_paths: