dependabot-nuget 0.240.0 → 0.242.0

Sign up to get free protection for your applications and to get access to all the features.
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 +23 -0
  39. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/GlobalJsonBuildFile.cs +36 -0
  40. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/JsonBuildFile.cs +47 -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 +460 -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 +83 -0
  63. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/XmlExtensions.cs +124 -0
  64. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/DotNetToolsJsonBuildFileTests.cs +53 -0
  65. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/GlobalJsonBuildFileTests.cs +80 -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 +598 -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