dependabot-nuget 0.268.0 → 0.270.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.
- checksums.yaml +4 -4
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +1 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/AnalyzeWorker.cs +6 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/CompatabilityChecker.cs +16 -13
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/Requirement.cs +8 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/SdkPackageUpdater.cs +17 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/DependencyConflictResolver.cs +689 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +187 -9
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/AnalyzeWorkerTests.cs +84 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/RequirementTests.cs +14 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TemporaryEnvironment.cs +23 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +164 -55
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Sdk.cs +65 -10
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +785 -1
- data/lib/dependabot/nuget/file_updater.rb +29 -13
- data/lib/dependabot/nuget/native_helpers.rb +6 -1
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 690337cc223bbf06e50f9f66fff955f966931bbc4368fe4d5849efb386c4a123
|
4
|
+
data.tar.gz: bce0d34b0c79064c99a511b88b8087f5d287ff7fef85aa01bb32b6d3b824a7d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 431e6a7b442ce8a7430882a125ccebe3b77b54dfc68698aa5c6279be0cde427a924c3faafceb0b1414d2e0feff35ad43e29e31aa410b11ea3bf451ac5cbf5288
|
7
|
+
data.tar.gz: 805297f077777b6cc7f8fdccbe46a37909b008bd7a09abfc86816ad3cdfda1da837b8fa49f8c4086e5910c27f61bc2179b4b550d84e26cabc378d34201aee4f5
|
@@ -255,6 +255,12 @@ public partial class AnalyzeWorker
|
|
255
255
|
CancellationToken cancellationToken)
|
256
256
|
{
|
257
257
|
var versions = versionResult.GetVersions();
|
258
|
+
if (versions.Length == 0)
|
259
|
+
{
|
260
|
+
// if absolutely nothing was found, then we can't update
|
261
|
+
return null;
|
262
|
+
}
|
263
|
+
|
258
264
|
var orderedVersions = findLowestVersion
|
259
265
|
? versions.OrderBy(v => v) // If we are fixing a vulnerability, then we want the lowest version that is safe.
|
260
266
|
: versions.OrderByDescending(v => v); // If we are just updating versions, then we want the highest version possible.
|
@@ -84,24 +84,27 @@ internal static class CompatibilityChecker
|
|
84
84
|
var reader = new NuspecReader(nuspecStream);
|
85
85
|
|
86
86
|
var isDevDependency = reader.GetDevelopmentDependency();
|
87
|
+
var tfms = new HashSet<NuGetFramework>();
|
88
|
+
var dependencyGroups = reader.GetDependencyGroups().ToArray();
|
87
89
|
|
88
|
-
var
|
89
|
-
.Select(d => d.TargetFramework)
|
90
|
-
.ToImmutableArray();
|
91
|
-
if (tfms.Length == 0)
|
90
|
+
foreach (var d in dependencyGroups)
|
92
91
|
{
|
93
|
-
// If the nuspec doesn't have any dependency groups,
|
94
|
-
// try to get the TargetFramework from files in the lib folder.
|
95
92
|
var libItems = (await readers.ContentReader.GetLibItemsAsync(cancellationToken)).ToList();
|
96
|
-
|
93
|
+
|
94
|
+
foreach (var item in libItems)
|
97
95
|
{
|
98
|
-
|
99
|
-
isDevDependency = true;
|
96
|
+
tfms.Add(item.TargetFramework);
|
100
97
|
}
|
101
98
|
|
102
|
-
|
103
|
-
|
104
|
-
.
|
99
|
+
if (!d.TargetFramework.IsAny)
|
100
|
+
{
|
101
|
+
tfms.Add(d.TargetFramework);
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
if (!tfms.Any())
|
106
|
+
{
|
107
|
+
tfms.Add(NuGetFramework.AnyFramework);
|
105
108
|
}
|
106
109
|
|
107
110
|
// The interfaces we given are not disposable but the underlying type can be.
|
@@ -109,7 +112,7 @@ internal static class CompatibilityChecker
|
|
109
112
|
(readers.CoreReader as IDisposable)?.Dispose();
|
110
113
|
(readers.ContentReader as IDisposable)?.Dispose();
|
111
114
|
|
112
|
-
return (isDevDependency, tfms);
|
115
|
+
return (isDevDependency, tfms.ToImmutableArray());
|
113
116
|
}
|
114
117
|
|
115
118
|
internal static PackageReaders ReadPackage(string tempPackagePath)
|
@@ -116,7 +116,14 @@ public class IndividualRequirement : Requirement
|
|
116
116
|
: [requirement[..(splitIndex + 1)].Trim(), requirement[(splitIndex + 1)..].Trim()];
|
117
117
|
|
118
118
|
var op = parts.Length == 1 ? "=" : parts[0];
|
119
|
-
var
|
119
|
+
var versionString = parts[^1];
|
120
|
+
|
121
|
+
// allow for single character wildcards; may be asterisk (NuGet-style: 1.*) or a single letter (alternate style: 1.x)
|
122
|
+
var versionParts = versionString.Split('.');
|
123
|
+
var recreatedVersionParts = versionParts.Select(vp => vp.Length == 1 && (vp == "*" || char.IsAsciiLetter(vp[0])) ? "0" : vp).ToArray();
|
124
|
+
|
125
|
+
var rebuiltVersionString = string.Join(".", recreatedVersionParts);
|
126
|
+
var version = NuGetVersion.Parse(rebuiltVersionString);
|
120
127
|
|
121
128
|
return new IndividualRequirement(op, version);
|
122
129
|
}
|
@@ -24,6 +24,7 @@ internal static class SdkPackageUpdater
|
|
24
24
|
|
25
25
|
// Get the set of all top-level dependencies in the current project
|
26
26
|
var topLevelDependencies = MSBuildHelper.GetTopLevelPackageDependencyInfos(buildFiles).ToArray();
|
27
|
+
|
27
28
|
if (!await DoesDependencyRequireUpdateAsync(repoRootPath, projectPath, tfms, topLevelDependencies, dependencyName, newDependencyVersion, logger))
|
28
29
|
{
|
29
30
|
return;
|
@@ -306,6 +307,7 @@ internal static class SdkPackageUpdater
|
|
306
307
|
IDictionary<string, string> peerDependencies,
|
307
308
|
Logger logger)
|
308
309
|
{
|
310
|
+
|
309
311
|
var result = TryUpdateDependencyVersion(buildFiles, dependencyName, previousDependencyVersion, newDependencyVersion, logger);
|
310
312
|
if (result == UpdateResult.NotFound)
|
311
313
|
{
|
@@ -324,7 +326,20 @@ internal static class SdkPackageUpdater
|
|
324
326
|
{
|
325
327
|
foreach (string tfm in targetFrameworks)
|
326
328
|
{
|
327
|
-
|
329
|
+
if (MSBuildHelper.UseNewDependencySolver())
|
330
|
+
{
|
331
|
+
// Find the index of the dependency we are updating and revert it to the previous version
|
332
|
+
int dependencyIndex = Array.FindIndex(updatedTopLevelDependencies, d => string.Equals(d.Name, dependencyName, StringComparison.OrdinalIgnoreCase));
|
333
|
+
if (dependencyIndex != -1)
|
334
|
+
{
|
335
|
+
var originalDependency = updatedTopLevelDependencies[dependencyIndex];
|
336
|
+
updatedTopLevelDependencies[dependencyIndex] = originalDependency with { Version = previousDependencyVersion };
|
337
|
+
}
|
338
|
+
|
339
|
+
}
|
340
|
+
Dependency[] update = [new Dependency(dependencyName, newDependencyVersion, DependencyType.PackageReference)];
|
341
|
+
Dependency[]? resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(repoRootPath, projectFile.Path, tfm, updatedTopLevelDependencies, update, logger);
|
342
|
+
|
328
343
|
if (resolvedDependencies is null)
|
329
344
|
{
|
330
345
|
logger.Log($" Unable to resolve dependency conflicts for {projectFile.Path}.");
|
@@ -345,7 +360,7 @@ internal static class SdkPackageUpdater
|
|
345
360
|
continue;
|
346
361
|
}
|
347
362
|
|
348
|
-
// update all
|
363
|
+
// update all dependencies
|
349
364
|
foreach (Dependency resolvedDependency in resolvedDependencies
|
350
365
|
.Where(d => !d.Name.Equals(dependencyName, StringComparison.OrdinalIgnoreCase))
|
351
366
|
.Where(d => d.Version is not null))
|