dependabot-nuget 0.240.0 → 0.241.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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/build +45 -0
  3. data/helpers/lib/NuGetUpdater/.editorconfig +364 -0
  4. data/helpers/lib/NuGetUpdater/.gitignore +5 -0
  5. data/helpers/lib/NuGetUpdater/Directory.Build.props +10 -0
  6. data/helpers/lib/NuGetUpdater/Directory.Common.props +16 -0
  7. data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Build.props +14 -0
  8. data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Build.targets +7 -0
  9. data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Packages.props +29 -0
  10. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Build.Tasks/NuGet.Build.Tasks.csproj +27 -0
  11. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.CommandLine/AssemblyMetadataExtractor.cs +203 -0
  12. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.CommandLine/NuGet.CommandLine.csproj +33 -0
  13. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Commands/NuGet.Commands.csproj +26 -0
  14. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Common/NuGet.Common.csproj +21 -0
  15. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Config +6 -0
  16. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Configuration/NuGet.Configuration.csproj +24 -0
  17. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Credentials/NuGet.Credentials.csproj +20 -0
  18. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.DependencyResolver.Core/NuGet.DependencyResolver.Core.csproj +22 -0
  19. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Frameworks/NuGet.Frameworks.csproj +17 -0
  20. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.LibraryModel/NuGet.LibraryModel.csproj +17 -0
  21. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.PackageManagement/NuGet.PackageManagement.csproj +27 -0
  22. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Packaging/NuGet.Packaging.csproj +28 -0
  23. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.ProjectModel/NuGet.ProjectModel.csproj +20 -0
  24. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Protocol/NuGet.Protocol.csproj +21 -0
  25. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Resolver/NuGet.Resolver.csproj +20 -0
  26. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Versioning/NuGet.Versioning.csproj +17 -0
  27. data/helpers/lib/NuGetUpdater/NuGetProjects/README.md +1 -0
  28. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/FrameworkCheckCommand.cs +35 -0
  29. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/UpdateCommand.cs +43 -0
  30. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/NuGetUpdater.Cli.csproj +20 -0
  31. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Program.cs +31 -0
  32. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.FrameworkCheck.cs +42 -0
  33. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +323 -0
  34. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/NuGetUpdater.Cli.Test.csproj +24 -0
  35. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Dependency.cs +3 -0
  36. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencyType.cs +12 -0
  37. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/BuildFile.cs +97 -0
  38. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/DotNetToolsJsonBuildFile.cs +24 -0
  39. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/GlobalJsonBuildFile.cs +25 -0
  40. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/JsonBuildFile.cs +32 -0
  41. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/PackagesConfigBuildFile.cs +31 -0
  42. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/ProjectBuildFile.cs +94 -0
  43. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/XmlBuildFile.cs +14 -0
  44. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/CompatabilityChecker.cs +39 -0
  45. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/FrameworkCompatibilityService.cs +73 -0
  46. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/SupportedFrameworks.cs +146 -0
  47. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/NuGetUpdater.Core.csproj +27 -0
  48. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/BindingRedirectManager.cs +316 -0
  49. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/BindingRedirectResolver.cs +87 -0
  50. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/ConfigurationFile.cs +3 -0
  51. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/DotNetToolsJsonUpdater.cs +66 -0
  52. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/GlobalJsonUpdater.cs +48 -0
  53. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackagesConfigUpdater.cs +172 -0
  54. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/SdkPackageUpdater.cs +498 -0
  55. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdateResult.cs +7 -0
  56. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +105 -0
  57. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/JsonHelper.cs +222 -0
  58. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/Logger.cs +24 -0
  59. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +443 -0
  60. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/NuGetHelper.cs +15 -0
  61. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathHelper.cs +69 -0
  62. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ProcessExtensions.cs +66 -0
  63. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/XmlExtensions.cs +124 -0
  64. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/DotNetToolsJsonBuildFileTests.cs +52 -0
  65. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/GlobalJsonBuildFileTests.cs +63 -0
  66. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/PackagesConfigBuildFileTests.cs +63 -0
  67. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/ProjectBuildFileTests.cs +154 -0
  68. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/CompatibilityCheckerFacts.cs +64 -0
  69. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/FrameworkCompatibilityServiceFacts.cs +122 -0
  70. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/SupportedFrameworkFacts.cs +68 -0
  71. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/NuGetUpdater.Core.Test.csproj +23 -0
  72. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TemporaryDirectory.cs +36 -0
  73. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TestExtensions.cs +15 -0
  74. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackagesConfigUpdaterTests.cs +79 -0
  75. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorker.DirsProj.cs +201 -0
  76. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTestBase.cs +147 -0
  77. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DotNetTools.cs +225 -0
  78. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.GlobalJson.cs +217 -0
  79. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Mixed.cs +94 -0
  80. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +938 -0
  81. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Sdk.cs +2177 -0
  82. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/JsonHelperTests.cs +239 -0
  83. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +394 -0
  84. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/SdkPackageUpdaterHelperTests.cs +179 -0
  85. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/SdkPackageUpdaterTests.cs +238 -0
  86. data/helpers/lib/NuGetUpdater/NuGetUpdater.sln +152 -0
  87. data/helpers/lib/NuGetUpdater/xunit.runner.json +4 -0
  88. data/lib/dependabot/nuget/metadata_finder.rb +4 -4
  89. metadata +91 -5
@@ -0,0 +1,179 @@
1
+ using System.IO;
2
+ using System.Linq;
3
+ using System.Threading.Tasks;
4
+
5
+ using Xunit;
6
+
7
+ namespace NuGetUpdater.Core.Test.Utilities
8
+ {
9
+ public class SdkPackageUpdaterHelperTests
10
+ {
11
+ [Fact]
12
+ public async Task DirectoryBuildFilesAreOnlyPulledInFromParentDirectories()
13
+ {
14
+ using var temporaryDirectory = TemporaryDirectory.CreateWithContents(
15
+ ("src/SomeProject.csproj", """
16
+ <Project Sdk="Microsoft.NET.Sdk">
17
+ <Import Project="..\props\Versions.props" />
18
+ </Project>
19
+ """),
20
+ ("src/Directory.Build.targets", """
21
+ <Project>
22
+ </Project>
23
+ """),
24
+ ("props/Versions.props", """
25
+ <Project>
26
+ </Project>
27
+ """),
28
+ ("Directory.Build.props", """
29
+ <Project>
30
+ </Project>
31
+ """),
32
+ ("test/Directory.Build.props", """
33
+ <Project>
34
+ <!-- this file should not be loaded -->
35
+ </Project>
36
+ """)
37
+ );
38
+ var actualBuildFilePaths = await LoadBuildFilesFromTemp(temporaryDirectory, "src/SomeProject.csproj");
39
+ var expectedBuildFilePaths = new[]
40
+ {
41
+ "src/SomeProject.csproj",
42
+ "Directory.Build.props",
43
+ "props/Versions.props",
44
+ "src/Directory.Build.targets",
45
+ };
46
+ Assert.Equal(expectedBuildFilePaths, actualBuildFilePaths);
47
+ }
48
+
49
+ [Theory]
50
+ [InlineData("", "")] // everything at root
51
+ [InlineData("src/", "src/")] // everything in subdirectory
52
+ [InlineData("src/", "")] // project in subdirectory, global.json at root
53
+ public async Task BuildFileEnumerationWorksEvenWithNonSupportedSdkInGlobalJson(string projectSubpath, string globalJsonSubpath)
54
+ {
55
+ using var temporaryDirectory = TemporaryDirectory.CreateWithContents(
56
+ ($"{projectSubpath}SomeProject.csproj", """
57
+ <Project Sdk="Microsoft.NET.Sdk">
58
+ </Project>
59
+ """),
60
+ ($"{projectSubpath}Directory.Build.props", """
61
+ <Project>
62
+ </Project>
63
+ """),
64
+ ($"{globalJsonSubpath}global.json", """
65
+ {
66
+ "sdk": {
67
+ "version": "99.99.99"
68
+ }
69
+ }
70
+ """)
71
+ );
72
+ var actualBuildFilePaths = await LoadBuildFilesFromTemp(temporaryDirectory, $"{projectSubpath}/SomeProject.csproj");
73
+ var expectedBuildFilePaths = new[]
74
+ {
75
+ $"{projectSubpath}SomeProject.csproj",
76
+ $"{projectSubpath}Directory.Build.props",
77
+ };
78
+ Assert.Equal(expectedBuildFilePaths, actualBuildFilePaths);
79
+ Assert.True(File.Exists($"{temporaryDirectory.DirectoryPath}/{globalJsonSubpath}global.json"), "global.json was not restored");
80
+ }
81
+
82
+ [Fact]
83
+ public async Task BuildFileEnumerationWithNonStandardMSBuildSdkAndNonSupportedSdkVersionInGlobalJson()
84
+ {
85
+ using var temporaryDirectory = TemporaryDirectory.CreateWithContents(
86
+ ("global.json", """
87
+ {
88
+ "sdk": {
89
+ "version": "99.99.99"
90
+ },
91
+ "msbuild-sdks": {
92
+ "Microsoft.Build.NoTargets": "3.7.0"
93
+ }
94
+ }
95
+ """),
96
+ ("SomeProject.csproj", """
97
+ <Project Sdk="Microsoft.NET.Sdk">
98
+ <Import Project="NoTargets.props" />
99
+ </Project>
100
+ """),
101
+ ("NoTargets.props", """
102
+ <Project Sdk="Microsoft.Build.NoTargets">
103
+ <Import Project="Versions.props" />
104
+ </Project>
105
+ """),
106
+ ("Versions.props", """
107
+ <Project Sdk="Microsoft.Build.NoTargets">
108
+ </Project>
109
+ """)
110
+ );
111
+ var actualBuildFilePaths = await LoadBuildFilesFromTemp(temporaryDirectory, "SomeProject.csproj");
112
+ var expectedBuildFilePaths = new[]
113
+ {
114
+ "SomeProject.csproj",
115
+ "NoTargets.props",
116
+ "Versions.props",
117
+ };
118
+ Assert.Equal(expectedBuildFilePaths, actualBuildFilePaths);
119
+ var globalJsonContent = await File.ReadAllTextAsync($"{temporaryDirectory.DirectoryPath}/global.json");
120
+ Assert.Contains("99.99.99", globalJsonContent); // ensure global.json was restored
121
+ }
122
+
123
+ [Fact]
124
+ public async Task BuildFileEnumerationWithUnsuccessfulImport()
125
+ {
126
+ using var temporaryDirectory = TemporaryDirectory.CreateWithContents(
127
+ ("Directory.Build.props", """
128
+ <Project>
129
+ <Import Project="file-that-does-not-exist.targets" />
130
+ </Project>
131
+ """),
132
+ ("NonBuildingProject.csproj", """
133
+ <Project Sdk="Microsoft.NET.Sdk">
134
+ </Project>
135
+ """)
136
+ );
137
+ var actualBuildFilePaths = await LoadBuildFilesFromTemp(temporaryDirectory, "NonBuildingProject.csproj");
138
+ var expectedBuildFilePaths = new[]
139
+ {
140
+ "NonBuildingProject.csproj",
141
+ "Directory.Build.props",
142
+ };
143
+ Assert.Equal(expectedBuildFilePaths, actualBuildFilePaths);
144
+ }
145
+
146
+ [Fact]
147
+ public async Task BuildFileEnumerationWithGlobalJsonWithComments()
148
+ {
149
+ using var temporaryDirectory = TemporaryDirectory.CreateWithContents(
150
+ ("global.json", """
151
+ {
152
+ // this is a comment
153
+ "msbuild-sdks": {
154
+ // this is a deep comment
155
+ "Microsoft.Build.NoTargets": "3.7.0"
156
+ }
157
+ }
158
+ """),
159
+ ("NonBuildingProject.csproj", """
160
+ <Project Sdk="Microsoft.Build.NoTargets">
161
+ </Project>
162
+ """)
163
+ );
164
+ var actualBuildFilePaths = await LoadBuildFilesFromTemp(temporaryDirectory, "NonBuildingProject.csproj");
165
+ var expectedBuildFilePaths = new[]
166
+ {
167
+ "NonBuildingProject.csproj",
168
+ };
169
+ Assert.Equal(expectedBuildFilePaths, actualBuildFilePaths);
170
+ }
171
+
172
+ private static async Task<string[]> LoadBuildFilesFromTemp(TemporaryDirectory temporaryDirectory, string relativeProjectPath)
173
+ {
174
+ var buildFiles = await MSBuildHelper.LoadBuildFiles(temporaryDirectory.DirectoryPath, $"{temporaryDirectory.DirectoryPath}/{relativeProjectPath}");
175
+ var buildFilePaths = buildFiles.Select(f => f.RepoRelativePath.NormalizePathToUnix()).ToArray();
176
+ return buildFilePaths;
177
+ }
178
+ }
179
+ }
@@ -0,0 +1,238 @@
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 new object[]
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", "3.3.21.19", "3.7.300.20", false // isTransitive
96
+ };
97
+
98
+ // Dependency project has version constraint
99
+ yield return new object[]
100
+ {
101
+ new[]
102
+ {
103
+ (Path: "src/Project2/Project2.csproj", Content: """
104
+ <Project Sdk="Microsoft.NET.Sdk">
105
+ <PropertyGroup>
106
+ <TargetFramework>netstandard2.0</TargetFramework>
107
+ </PropertyGroup>
108
+ <ItemGroup>
109
+ <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
110
+ <ProjectReference Include="../Project/Project.csproj" />
111
+ </ItemGroup>
112
+ </Project>
113
+ """),
114
+ (Path: "src/Project/Project.csproj", Content: """
115
+ <Project Sdk="Microsoft.NET.Sdk">
116
+ <PropertyGroup>
117
+ <TargetFramework>netstandard2.0</TargetFramework>
118
+ </PropertyGroup>
119
+ <ItemGroup>
120
+ <PackageReference Include="Newtonsoft.Json" Version="[12.0.1, 13.0.0)" />
121
+ </ItemGroup>
122
+ </Project>
123
+ """),
124
+ }, // starting contents
125
+ new[]
126
+ {
127
+ (Path: "src/Project2/Project2.csproj", Content: """
128
+ <Project Sdk="Microsoft.NET.Sdk">
129
+ <PropertyGroup>
130
+ <TargetFramework>netstandard2.0</TargetFramework>
131
+ </PropertyGroup>
132
+ <ItemGroup>
133
+ <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
134
+ <ProjectReference Include="../Project/Project.csproj" />
135
+ </ItemGroup>
136
+ </Project>
137
+ """), // starting contents
138
+ (Path: "src/Project/Project.csproj", Content: """
139
+ <Project Sdk="Microsoft.NET.Sdk">
140
+ <PropertyGroup>
141
+ <TargetFramework>netstandard2.0</TargetFramework>
142
+ </PropertyGroup>
143
+ <ItemGroup>
144
+ <PackageReference Include="Newtonsoft.Json" Version="[12.0.1, 13.0.0)" />
145
+ </ItemGroup>
146
+ </Project>
147
+ """),
148
+ },// expected contents
149
+ "Newtonsoft.Json", "12.0.1", "13.0.1", false // isTransitive
150
+ };
151
+
152
+ // Multiple references
153
+ yield return new object[]
154
+ {
155
+ new []
156
+ {
157
+ (Path: "src/Project.csproj", Content: """
158
+ <Project Sdk="Microsoft.NET.Sdk">
159
+ <PropertyGroup>
160
+ <TargetFramework>netstandard2.0</TargetFramework>
161
+ </PropertyGroup>
162
+ <ItemGroup>
163
+ <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
164
+ <PackageReference Include="Newtonsoft.Json">
165
+ <Version>12.0.1</Version>
166
+ </PackageReference>
167
+ </ItemGroup>
168
+ </Project>
169
+ """)
170
+ }, // starting contents
171
+ new []
172
+ {
173
+ (Path: "src/Project.csproj", Content: """
174
+ <Project Sdk="Microsoft.NET.Sdk">
175
+ <PropertyGroup>
176
+ <TargetFramework>netstandard2.0</TargetFramework>
177
+ </PropertyGroup>
178
+ <ItemGroup>
179
+ <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
180
+ <PackageReference Include="Newtonsoft.Json">
181
+ <Version>13.0.1</Version>
182
+ </PackageReference>
183
+ </ItemGroup>
184
+ </Project>
185
+ """)
186
+ }, // expected contents
187
+ "Newtonsoft.Json", "12.0.1", "13.0.1", false // isTransitive
188
+ };
189
+
190
+ // PackageReference with Version as child element
191
+ yield return new object[]
192
+ {
193
+ new []
194
+ {
195
+ (Path: "src/Project.csproj", Content: """
196
+ <Project Sdk="Microsoft.NET.Sdk">
197
+ <PropertyGroup>
198
+ <TargetFramework>netstandard2.0</TargetFramework>
199
+ </PropertyGroup>
200
+ <ItemGroup>
201
+ <PackageReference Include="Newtonsoft.Json">
202
+ <Version>12.0.1</Version>
203
+ </PackageReference>
204
+ </ItemGroup>
205
+ </Project>
206
+ """)
207
+ }, // starting contents
208
+ new []
209
+ {
210
+ (Path: "src/Project.csproj", Content: """
211
+ <Project Sdk="Microsoft.NET.Sdk">
212
+ <PropertyGroup>
213
+ <TargetFramework>netstandard2.0</TargetFramework>
214
+ </PropertyGroup>
215
+ <ItemGroup>
216
+ <PackageReference Include="Newtonsoft.Json">
217
+ <Version>13.0.1</Version>
218
+ </PackageReference>
219
+ </ItemGroup>
220
+ </Project>
221
+ """)
222
+ }, // expected contents
223
+ "Newtonsoft.Json", "12.0.1", "13.0.1", false // isTransitive
224
+ };
225
+ }
226
+
227
+ private static void AssertContentsEqual((string Path, string Contents)[] expectedContents, TemporaryDirectory directory)
228
+ {
229
+ var actualFiles = Directory.GetFiles(directory.DirectoryPath, "*", SearchOption.AllDirectories);
230
+ Assert.Equal(expectedContents.Length, actualFiles.Length);
231
+ foreach (var (path, contents) in expectedContents)
232
+ {
233
+ var fullPath = Path.Combine(directory.DirectoryPath, path);
234
+ Assert.True(File.Exists(fullPath));
235
+ Assert.Equal(contents, File.ReadAllText(fullPath));
236
+ }
237
+ }
238
+ }
@@ -0,0 +1,152 @@
1
+
2
+ Microsoft Visual Studio Solution File, Format Version 12.00
3
+ # Visual Studio Version 17
4
+ VisualStudioVersion = 17.5.33516.290
5
+ MinimumVisualStudioVersion = 10.0.40219.1
6
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGetUpdater.Cli", "NuGetUpdater.Cli\NuGetUpdater.Cli.csproj", "{DA55A30A-048A-4D8A-A3EC-4F2CF4B294B8}"
7
+ EndProject
8
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGetUpdater.Core", "NuGetUpdater.Core\NuGetUpdater.Core.csproj", "{82DFC908-9EA6-4339-B459-04D8B356E508}"
9
+ EndProject
10
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGetUpdater.Core.Test", "NuGetUpdater.Core.Test\NuGetUpdater.Core.Test.csproj", "{AE3E29CD-0F66-4A66-93C1-440D701BD4F7}"
11
+ EndProject
12
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.CommandLine", "NuGetProjects\NuGet.CommandLine\NuGet.CommandLine.csproj", "{8F8EF09F-DB34-46F0-8EFC-B72CA498C198}"
13
+ EndProject
14
+ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NuGet", "NuGet", "{1095100B-0857-4132-A4CF-D54C4124DED9}"
15
+ EndProject
16
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.Build.Tasks", "NuGetProjects\NuGet.Build.Tasks\NuGet.Build.Tasks.csproj", "{C54058D4-6E8F-42B3-A35E-734CC10AC152}"
17
+ EndProject
18
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.Commands", "NuGetProjects\NuGet.Commands\NuGet.Commands.csproj", "{FFE5164F-999F-4F09-8607-10613C51712C}"
19
+ EndProject
20
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.Common", "NuGetProjects\NuGet.Common\NuGet.Common.csproj", "{6D050FD3-E1F4-4DDE-8313-879A86849DA8}"
21
+ EndProject
22
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.Configuration", "NuGetProjects\NuGet.Configuration\NuGet.Configuration.csproj", "{3EE95A8E-D907-4DFA-9CBF-00C497878C42}"
23
+ EndProject
24
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.Credentials", "NuGetProjects\NuGet.Credentials\NuGet.Credentials.csproj", "{3F764153-B736-49A7-B1E5-97446823FB8C}"
25
+ EndProject
26
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.DependencyResolver.Core", "NuGetProjects\NuGet.DependencyResolver.Core\NuGet.DependencyResolver.Core.csproj", "{F3AAA86A-5540-49B7-8C9C-17B18D95ADCD}"
27
+ EndProject
28
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.Frameworks", "NuGetProjects\NuGet.Frameworks\NuGet.Frameworks.csproj", "{A9F779D8-B6EA-481D-9EA6-59D2028FF9CB}"
29
+ EndProject
30
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.LibraryModel", "NuGetProjects\NuGet.LibraryModel\NuGet.LibraryModel.csproj", "{304FFB77-E4CC-4997-870D-A9D8E38E19A2}"
31
+ EndProject
32
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.PackageManagement", "NuGetProjects\NuGet.PackageManagement\NuGet.PackageManagement.csproj", "{0C21F9AE-B44F-4EA5-8811-6207A865BCC7}"
33
+ EndProject
34
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.Packaging", "NuGetProjects\NuGet.Packaging\NuGet.Packaging.csproj", "{4442EA58-FBF0-4DCE-9D0E-895FF44590DB}"
35
+ EndProject
36
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.ProjectModel", "NuGetProjects\NuGet.ProjectModel\NuGet.ProjectModel.csproj", "{4DAC0531-794B-4E0E-8A62-48FA8CB4AA5C}"
37
+ EndProject
38
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.Protocol", "NuGetProjects\NuGet.Protocol\NuGet.Protocol.csproj", "{0AEA8D0D-6FFE-46A3-B078-B08C409C1731}"
39
+ EndProject
40
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.Resolver", "NuGetProjects\NuGet.Resolver\NuGet.Resolver.csproj", "{F3AAC7AB-DC59-4290-8BBF-59EF80BA6DB3}"
41
+ EndProject
42
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGet.Versioning", "NuGetProjects\NuGet.Versioning\NuGet.Versioning.csproj", "{0DCEEE7C-C53C-446C-A3BC-D5C254A952F4}"
43
+ EndProject
44
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NuGetUpdater.Cli.Test", "NuGetUpdater.Cli.Test\NuGetUpdater.Cli.Test.csproj", "{BDBEBF91-F5FD-4589-B4FB-B3DE3103B04B}"
45
+ EndProject
46
+ Global
47
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
48
+ Debug|Any CPU = Debug|Any CPU
49
+ Release|Any CPU = Release|Any CPU
50
+ EndGlobalSection
51
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
52
+ {DA55A30A-048A-4D8A-A3EC-4F2CF4B294B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
53
+ {DA55A30A-048A-4D8A-A3EC-4F2CF4B294B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
54
+ {DA55A30A-048A-4D8A-A3EC-4F2CF4B294B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
55
+ {DA55A30A-048A-4D8A-A3EC-4F2CF4B294B8}.Release|Any CPU.Build.0 = Release|Any CPU
56
+ {82DFC908-9EA6-4339-B459-04D8B356E508}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
57
+ {82DFC908-9EA6-4339-B459-04D8B356E508}.Debug|Any CPU.Build.0 = Debug|Any CPU
58
+ {82DFC908-9EA6-4339-B459-04D8B356E508}.Release|Any CPU.ActiveCfg = Release|Any CPU
59
+ {82DFC908-9EA6-4339-B459-04D8B356E508}.Release|Any CPU.Build.0 = Release|Any CPU
60
+ {AE3E29CD-0F66-4A66-93C1-440D701BD4F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
61
+ {AE3E29CD-0F66-4A66-93C1-440D701BD4F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
62
+ {AE3E29CD-0F66-4A66-93C1-440D701BD4F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
63
+ {AE3E29CD-0F66-4A66-93C1-440D701BD4F7}.Release|Any CPU.Build.0 = Release|Any CPU
64
+ {8F8EF09F-DB34-46F0-8EFC-B72CA498C198}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
65
+ {8F8EF09F-DB34-46F0-8EFC-B72CA498C198}.Debug|Any CPU.Build.0 = Debug|Any CPU
66
+ {8F8EF09F-DB34-46F0-8EFC-B72CA498C198}.Release|Any CPU.ActiveCfg = Release|Any CPU
67
+ {8F8EF09F-DB34-46F0-8EFC-B72CA498C198}.Release|Any CPU.Build.0 = Release|Any CPU
68
+ {C54058D4-6E8F-42B3-A35E-734CC10AC152}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
69
+ {C54058D4-6E8F-42B3-A35E-734CC10AC152}.Debug|Any CPU.Build.0 = Debug|Any CPU
70
+ {C54058D4-6E8F-42B3-A35E-734CC10AC152}.Release|Any CPU.ActiveCfg = Release|Any CPU
71
+ {C54058D4-6E8F-42B3-A35E-734CC10AC152}.Release|Any CPU.Build.0 = Release|Any CPU
72
+ {FFE5164F-999F-4F09-8607-10613C51712C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
73
+ {FFE5164F-999F-4F09-8607-10613C51712C}.Debug|Any CPU.Build.0 = Debug|Any CPU
74
+ {FFE5164F-999F-4F09-8607-10613C51712C}.Release|Any CPU.ActiveCfg = Release|Any CPU
75
+ {FFE5164F-999F-4F09-8607-10613C51712C}.Release|Any CPU.Build.0 = Release|Any CPU
76
+ {6D050FD3-E1F4-4DDE-8313-879A86849DA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
77
+ {6D050FD3-E1F4-4DDE-8313-879A86849DA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
78
+ {6D050FD3-E1F4-4DDE-8313-879A86849DA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
79
+ {6D050FD3-E1F4-4DDE-8313-879A86849DA8}.Release|Any CPU.Build.0 = Release|Any CPU
80
+ {3EE95A8E-D907-4DFA-9CBF-00C497878C42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
81
+ {3EE95A8E-D907-4DFA-9CBF-00C497878C42}.Debug|Any CPU.Build.0 = Debug|Any CPU
82
+ {3EE95A8E-D907-4DFA-9CBF-00C497878C42}.Release|Any CPU.ActiveCfg = Release|Any CPU
83
+ {3EE95A8E-D907-4DFA-9CBF-00C497878C42}.Release|Any CPU.Build.0 = Release|Any CPU
84
+ {3F764153-B736-49A7-B1E5-97446823FB8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
85
+ {3F764153-B736-49A7-B1E5-97446823FB8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
86
+ {3F764153-B736-49A7-B1E5-97446823FB8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
87
+ {3F764153-B736-49A7-B1E5-97446823FB8C}.Release|Any CPU.Build.0 = Release|Any CPU
88
+ {F3AAA86A-5540-49B7-8C9C-17B18D95ADCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
89
+ {F3AAA86A-5540-49B7-8C9C-17B18D95ADCD}.Debug|Any CPU.Build.0 = Debug|Any CPU
90
+ {F3AAA86A-5540-49B7-8C9C-17B18D95ADCD}.Release|Any CPU.ActiveCfg = Release|Any CPU
91
+ {F3AAA86A-5540-49B7-8C9C-17B18D95ADCD}.Release|Any CPU.Build.0 = Release|Any CPU
92
+ {A9F779D8-B6EA-481D-9EA6-59D2028FF9CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
93
+ {A9F779D8-B6EA-481D-9EA6-59D2028FF9CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
94
+ {A9F779D8-B6EA-481D-9EA6-59D2028FF9CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
95
+ {A9F779D8-B6EA-481D-9EA6-59D2028FF9CB}.Release|Any CPU.Build.0 = Release|Any CPU
96
+ {304FFB77-E4CC-4997-870D-A9D8E38E19A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
97
+ {304FFB77-E4CC-4997-870D-A9D8E38E19A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
98
+ {304FFB77-E4CC-4997-870D-A9D8E38E19A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
99
+ {304FFB77-E4CC-4997-870D-A9D8E38E19A2}.Release|Any CPU.Build.0 = Release|Any CPU
100
+ {0C21F9AE-B44F-4EA5-8811-6207A865BCC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
101
+ {0C21F9AE-B44F-4EA5-8811-6207A865BCC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
102
+ {0C21F9AE-B44F-4EA5-8811-6207A865BCC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
103
+ {0C21F9AE-B44F-4EA5-8811-6207A865BCC7}.Release|Any CPU.Build.0 = Release|Any CPU
104
+ {4442EA58-FBF0-4DCE-9D0E-895FF44590DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
105
+ {4442EA58-FBF0-4DCE-9D0E-895FF44590DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
106
+ {4442EA58-FBF0-4DCE-9D0E-895FF44590DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
107
+ {4442EA58-FBF0-4DCE-9D0E-895FF44590DB}.Release|Any CPU.Build.0 = Release|Any CPU
108
+ {4DAC0531-794B-4E0E-8A62-48FA8CB4AA5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
109
+ {4DAC0531-794B-4E0E-8A62-48FA8CB4AA5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
110
+ {4DAC0531-794B-4E0E-8A62-48FA8CB4AA5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
111
+ {4DAC0531-794B-4E0E-8A62-48FA8CB4AA5C}.Release|Any CPU.Build.0 = Release|Any CPU
112
+ {0AEA8D0D-6FFE-46A3-B078-B08C409C1731}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
113
+ {0AEA8D0D-6FFE-46A3-B078-B08C409C1731}.Debug|Any CPU.Build.0 = Debug|Any CPU
114
+ {0AEA8D0D-6FFE-46A3-B078-B08C409C1731}.Release|Any CPU.ActiveCfg = Release|Any CPU
115
+ {0AEA8D0D-6FFE-46A3-B078-B08C409C1731}.Release|Any CPU.Build.0 = Release|Any CPU
116
+ {F3AAC7AB-DC59-4290-8BBF-59EF80BA6DB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
117
+ {F3AAC7AB-DC59-4290-8BBF-59EF80BA6DB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
118
+ {F3AAC7AB-DC59-4290-8BBF-59EF80BA6DB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
119
+ {F3AAC7AB-DC59-4290-8BBF-59EF80BA6DB3}.Release|Any CPU.Build.0 = Release|Any CPU
120
+ {0DCEEE7C-C53C-446C-A3BC-D5C254A952F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
121
+ {0DCEEE7C-C53C-446C-A3BC-D5C254A952F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
122
+ {0DCEEE7C-C53C-446C-A3BC-D5C254A952F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
123
+ {0DCEEE7C-C53C-446C-A3BC-D5C254A952F4}.Release|Any CPU.Build.0 = Release|Any CPU
124
+ {BDBEBF91-F5FD-4589-B4FB-B3DE3103B04B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
125
+ {BDBEBF91-F5FD-4589-B4FB-B3DE3103B04B}.Debug|Any CPU.Build.0 = Debug|Any CPU
126
+ {BDBEBF91-F5FD-4589-B4FB-B3DE3103B04B}.Release|Any CPU.ActiveCfg = Release|Any CPU
127
+ {BDBEBF91-F5FD-4589-B4FB-B3DE3103B04B}.Release|Any CPU.Build.0 = Release|Any CPU
128
+ EndGlobalSection
129
+ GlobalSection(SolutionProperties) = preSolution
130
+ HideSolutionNode = FALSE
131
+ EndGlobalSection
132
+ GlobalSection(NestedProjects) = preSolution
133
+ {8F8EF09F-DB34-46F0-8EFC-B72CA498C198} = {1095100B-0857-4132-A4CF-D54C4124DED9}
134
+ {C54058D4-6E8F-42B3-A35E-734CC10AC152} = {1095100B-0857-4132-A4CF-D54C4124DED9}
135
+ {FFE5164F-999F-4F09-8607-10613C51712C} = {1095100B-0857-4132-A4CF-D54C4124DED9}
136
+ {6D050FD3-E1F4-4DDE-8313-879A86849DA8} = {1095100B-0857-4132-A4CF-D54C4124DED9}
137
+ {3EE95A8E-D907-4DFA-9CBF-00C497878C42} = {1095100B-0857-4132-A4CF-D54C4124DED9}
138
+ {3F764153-B736-49A7-B1E5-97446823FB8C} = {1095100B-0857-4132-A4CF-D54C4124DED9}
139
+ {F3AAA86A-5540-49B7-8C9C-17B18D95ADCD} = {1095100B-0857-4132-A4CF-D54C4124DED9}
140
+ {A9F779D8-B6EA-481D-9EA6-59D2028FF9CB} = {1095100B-0857-4132-A4CF-D54C4124DED9}
141
+ {304FFB77-E4CC-4997-870D-A9D8E38E19A2} = {1095100B-0857-4132-A4CF-D54C4124DED9}
142
+ {0C21F9AE-B44F-4EA5-8811-6207A865BCC7} = {1095100B-0857-4132-A4CF-D54C4124DED9}
143
+ {4442EA58-FBF0-4DCE-9D0E-895FF44590DB} = {1095100B-0857-4132-A4CF-D54C4124DED9}
144
+ {4DAC0531-794B-4E0E-8A62-48FA8CB4AA5C} = {1095100B-0857-4132-A4CF-D54C4124DED9}
145
+ {0AEA8D0D-6FFE-46A3-B078-B08C409C1731} = {1095100B-0857-4132-A4CF-D54C4124DED9}
146
+ {F3AAC7AB-DC59-4290-8BBF-59EF80BA6DB3} = {1095100B-0857-4132-A4CF-D54C4124DED9}
147
+ {0DCEEE7C-C53C-446C-A3BC-D5C254A952F4} = {1095100B-0857-4132-A4CF-D54C4124DED9}
148
+ EndGlobalSection
149
+ GlobalSection(ExtensibilityGlobals) = postSolution
150
+ SolutionGuid = {3DAF2124-E0B2-45D5-9059-3E5516C2531C}
151
+ EndGlobalSection
152
+ EndGlobal
@@ -0,0 +1,4 @@
1
+ {
2
+ "$schema": "https://xunit.net/schema/current/xunit.runner.schema.json",
3
+ "parallelizeTestCollections": false
4
+ }
@@ -32,7 +32,7 @@ module Dependabot
32
32
  end
33
33
 
34
34
  def src_repo_from_project
35
- source = dependency.requirements.find { |r| r&.fetch(:source) }&.fetch(:source)
35
+ source = dependency.requirements.find { |r| r.fetch(:source) }&.fetch(:source)
36
36
  return unless source
37
37
 
38
38
  # Query the service index e.g. https://nuget.pkg.github.com/ORG/index.json
@@ -123,14 +123,14 @@ module Dependabot
123
123
 
124
124
  def dependency_nuspec_url
125
125
  source = dependency.requirements
126
- .find { |r| r&.fetch(:source) }&.fetch(:source)
126
+ .find { |r| r.fetch(:source) }&.fetch(:source)
127
127
 
128
128
  source.fetch(:nuspec_url) if source&.key?(:nuspec_url)
129
129
  end
130
130
 
131
131
  def dependency_source_url
132
132
  source = dependency.requirements
133
- .find { |r| r&.fetch(:source) }&.fetch(:source)
133
+ .find { |r| r.fetch(:source) }&.fetch(:source)
134
134
 
135
135
  return unless source
136
136
  return source.fetch(:source_url) if source.key?(:source_url)
@@ -141,7 +141,7 @@ module Dependabot
141
141
  # rubocop:disable Metrics/PerceivedComplexity
142
142
  def auth_header
143
143
  source = dependency.requirements
144
- .find { |r| r&.fetch(:source) }&.fetch(:source)
144
+ .find { |r| r.fetch(:source) }&.fetch(:source)
145
145
  url = source&.fetch(:url, nil) || source&.fetch("url")
146
146
 
147
147
  token = credentials