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.
- checksums.yaml +4 -4
- data/helpers/build +45 -0
- data/helpers/lib/NuGetUpdater/.editorconfig +364 -0
- data/helpers/lib/NuGetUpdater/.gitignore +5 -0
- data/helpers/lib/NuGetUpdater/Directory.Build.props +10 -0
- data/helpers/lib/NuGetUpdater/Directory.Common.props +16 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Build.props +14 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Build.targets +7 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Packages.props +29 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Build.Tasks/NuGet.Build.Tasks.csproj +27 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.CommandLine/AssemblyMetadataExtractor.cs +203 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.CommandLine/NuGet.CommandLine.csproj +33 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Commands/NuGet.Commands.csproj +26 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Common/NuGet.Common.csproj +21 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Config +6 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Configuration/NuGet.Configuration.csproj +24 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Credentials/NuGet.Credentials.csproj +20 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.DependencyResolver.Core/NuGet.DependencyResolver.Core.csproj +22 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Frameworks/NuGet.Frameworks.csproj +17 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.LibraryModel/NuGet.LibraryModel.csproj +17 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.PackageManagement/NuGet.PackageManagement.csproj +27 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Packaging/NuGet.Packaging.csproj +28 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.ProjectModel/NuGet.ProjectModel.csproj +20 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Protocol/NuGet.Protocol.csproj +21 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Resolver/NuGet.Resolver.csproj +20 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Versioning/NuGet.Versioning.csproj +17 -0
- data/helpers/lib/NuGetUpdater/NuGetProjects/README.md +1 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/FrameworkCheckCommand.cs +35 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/UpdateCommand.cs +43 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/NuGetUpdater.Cli.csproj +20 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Program.cs +31 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.FrameworkCheck.cs +42 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +323 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/NuGetUpdater.Cli.Test.csproj +24 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Dependency.cs +3 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencyType.cs +12 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/BuildFile.cs +97 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/DotNetToolsJsonBuildFile.cs +24 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/GlobalJsonBuildFile.cs +25 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/JsonBuildFile.cs +32 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/PackagesConfigBuildFile.cs +31 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/ProjectBuildFile.cs +94 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/XmlBuildFile.cs +14 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/CompatabilityChecker.cs +39 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/FrameworkCompatibilityService.cs +73 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/SupportedFrameworks.cs +146 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/NuGetUpdater.Core.csproj +27 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/BindingRedirectManager.cs +316 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/BindingRedirectResolver.cs +87 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/ConfigurationFile.cs +3 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/DotNetToolsJsonUpdater.cs +66 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/GlobalJsonUpdater.cs +48 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackagesConfigUpdater.cs +172 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/SdkPackageUpdater.cs +498 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdateResult.cs +7 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +105 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/JsonHelper.cs +222 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/Logger.cs +24 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +443 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/NuGetHelper.cs +15 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathHelper.cs +69 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ProcessExtensions.cs +66 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/XmlExtensions.cs +124 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/DotNetToolsJsonBuildFileTests.cs +52 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/GlobalJsonBuildFileTests.cs +63 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/PackagesConfigBuildFileTests.cs +63 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/ProjectBuildFileTests.cs +154 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/CompatibilityCheckerFacts.cs +64 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/FrameworkCompatibilityServiceFacts.cs +122 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/SupportedFrameworkFacts.cs +68 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/NuGetUpdater.Core.Test.csproj +23 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TemporaryDirectory.cs +36 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TestExtensions.cs +15 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackagesConfigUpdaterTests.cs +79 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorker.DirsProj.cs +201 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTestBase.cs +147 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DotNetTools.cs +225 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.GlobalJson.cs +217 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Mixed.cs +94 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +938 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Sdk.cs +2177 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/JsonHelperTests.cs +239 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +394 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/SdkPackageUpdaterHelperTests.cs +179 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/SdkPackageUpdaterTests.cs +238 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.sln +152 -0
- data/helpers/lib/NuGetUpdater/xunit.runner.json +4 -0
- data/lib/dependabot/nuget/metadata_finder.rb +4 -4
- metadata +91 -5
@@ -0,0 +1,2177 @@
|
|
1
|
+
using System.Threading.Tasks;
|
2
|
+
|
3
|
+
using Xunit;
|
4
|
+
|
5
|
+
namespace NuGetUpdater.Core.Test.Update;
|
6
|
+
|
7
|
+
public partial class UpdateWorkerTests
|
8
|
+
{
|
9
|
+
public class Sdk : UpdateWorkerTestBase
|
10
|
+
{
|
11
|
+
public Sdk()
|
12
|
+
{
|
13
|
+
MSBuildHelper.RegisterMSBuild();
|
14
|
+
}
|
15
|
+
|
16
|
+
[Theory]
|
17
|
+
[InlineData("net472")]
|
18
|
+
[InlineData("netstandard2.0")]
|
19
|
+
[InlineData("net5.0")]
|
20
|
+
[InlineData("net6.0")]
|
21
|
+
[InlineData("net7.0")]
|
22
|
+
[InlineData("net8.0")]
|
23
|
+
public async Task UpdateVersionAttribute_InProjectFile_ForPackageReferenceInclude(string tfm)
|
24
|
+
{
|
25
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
26
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
27
|
+
// initial
|
28
|
+
projectContents: $"""
|
29
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
30
|
+
<PropertyGroup>
|
31
|
+
<TargetFramework>{tfm}</TargetFramework>
|
32
|
+
</PropertyGroup>
|
33
|
+
|
34
|
+
<ItemGroup>
|
35
|
+
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
|
36
|
+
</ItemGroup>
|
37
|
+
</Project>
|
38
|
+
""",
|
39
|
+
// expected
|
40
|
+
expectedProjectContents: $"""
|
41
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
42
|
+
<PropertyGroup>
|
43
|
+
<TargetFramework>{tfm}</TargetFramework>
|
44
|
+
</PropertyGroup>
|
45
|
+
|
46
|
+
<ItemGroup>
|
47
|
+
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
48
|
+
</ItemGroup>
|
49
|
+
</Project>
|
50
|
+
""");
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
[Theory]
|
55
|
+
[InlineData("$(NewtonsoftJsonVersion")]
|
56
|
+
[InlineData("$NewtonsoftJsonVersion)")]
|
57
|
+
[InlineData("$NewtonsoftJsonVersion")]
|
58
|
+
[InlineData("NewtonsoftJsonVersion)")]
|
59
|
+
public async Task Update_InvalidFile_DoesNotThrow(string versionString)
|
60
|
+
{
|
61
|
+
await TestNoChangeforProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
62
|
+
$"""
|
63
|
+
<Project Sdk="Microsoft.NET.Sdk">">
|
64
|
+
<PropertyGroup>
|
65
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
66
|
+
<NewtonsoftJsonVersion>9.0.1</NewtonsoftJsonVersion>
|
67
|
+
</PropertyGroup>
|
68
|
+
<ItemGroup>
|
69
|
+
<PackageReference Include="Newtonsoft.Json" Version="{versionString}" />
|
70
|
+
</ItemGroup>
|
71
|
+
</Project>
|
72
|
+
""");
|
73
|
+
}
|
74
|
+
|
75
|
+
[Fact]
|
76
|
+
public async Task UpdateFindsNearestNugetConfig_AndSucceeds()
|
77
|
+
{
|
78
|
+
// Clean the cache to ensure we don't find a cached version of packages.
|
79
|
+
await ProcessEx.RunAsync("dotnet", $"nuget locals -c all");
|
80
|
+
// If the Top-Level NugetConfig was found we would have failed.
|
81
|
+
var privateNugetContent = $"""
|
82
|
+
<?xml version="1.0" encoding="utf-8"?>
|
83
|
+
<configuration>
|
84
|
+
|
85
|
+
<packageSources>
|
86
|
+
<clear />
|
87
|
+
<add key="nuget_PrivateFeed" value="https://api.nuget.org/v3/index.json" />
|
88
|
+
</packageSources>
|
89
|
+
</configuration>
|
90
|
+
""";
|
91
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
92
|
+
projectFile: (Path: "Directory/Project.csproj", Content: """
|
93
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
94
|
+
<PropertyGroup>
|
95
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
96
|
+
</PropertyGroup>
|
97
|
+
<ItemGroup>
|
98
|
+
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
|
99
|
+
</ItemGroup>
|
100
|
+
</Project>
|
101
|
+
"""),
|
102
|
+
$"""
|
103
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
104
|
+
<PropertyGroup>
|
105
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
106
|
+
</PropertyGroup>
|
107
|
+
<ItemGroup>
|
108
|
+
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
109
|
+
</ItemGroup>
|
110
|
+
</Project>
|
111
|
+
""",
|
112
|
+
additionalFiles: new (string Path, string Content)[] {
|
113
|
+
(Path: "NuGet.config", Content: $"""
|
114
|
+
<?xml version="1.0" encoding="utf-8"?>
|
115
|
+
<configuration>
|
116
|
+
<packageSources>
|
117
|
+
<clear />
|
118
|
+
<add key="nuget_PublicFeed" value="https://api.nuget.org/v3/BROKEN.json" />
|
119
|
+
</packageSources>
|
120
|
+
</configuration>
|
121
|
+
"""),
|
122
|
+
(Path: "Directory/NuGet.config", Content: privateNugetContent)
|
123
|
+
});
|
124
|
+
}
|
125
|
+
|
126
|
+
[Fact]
|
127
|
+
public async Task UpdateReturnsEmptyArray_WhenBuildFails()
|
128
|
+
{
|
129
|
+
// Clean the cache to ensure we don't find a cached version of packages.
|
130
|
+
await ProcessEx.RunAsync("dotnet", $"nuget locals -c all");
|
131
|
+
await TestNoChangeforProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
132
|
+
"""
|
133
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
134
|
+
<PropertyGroup>
|
135
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
136
|
+
</PropertyGroup>
|
137
|
+
<ItemGroup>
|
138
|
+
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
|
139
|
+
</ItemGroup>
|
140
|
+
</Project>
|
141
|
+
""",
|
142
|
+
additionalFiles: new (string Path, string Content)[] {
|
143
|
+
(Path: "NuGet.config", Content: $"""
|
144
|
+
<?xml version="1.0" encoding="utf-8"?>
|
145
|
+
<configuration>
|
146
|
+
<config>
|
147
|
+
<add key="repositoryPath" value="./packages" />
|
148
|
+
</config>
|
149
|
+
<packageSources>
|
150
|
+
<clear />
|
151
|
+
<add key="nuget_BrokenFeed" value="https://api.nuget.org/BrokenFeed" />
|
152
|
+
</packageSources>
|
153
|
+
</configuration>
|
154
|
+
"""),
|
155
|
+
});
|
156
|
+
}
|
157
|
+
|
158
|
+
[Fact]
|
159
|
+
public async Task UpdateExactMatchVersionAttribute_InProjectFile_ForPackageReferenceInclude()
|
160
|
+
{
|
161
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
162
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
163
|
+
// initial
|
164
|
+
projectContents: $"""
|
165
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
166
|
+
<PropertyGroup>
|
167
|
+
<TargetFramework>net6.0</TargetFramework>
|
168
|
+
</PropertyGroup>
|
169
|
+
|
170
|
+
<ItemGroup>
|
171
|
+
<PackageReference Include="Newtonsoft.Json" Version="[9.0.1]" />
|
172
|
+
</ItemGroup>
|
173
|
+
</Project>
|
174
|
+
""",
|
175
|
+
// expected
|
176
|
+
expectedProjectContents: $"""
|
177
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
178
|
+
<PropertyGroup>
|
179
|
+
<TargetFramework>net6.0</TargetFramework>
|
180
|
+
</PropertyGroup>
|
181
|
+
|
182
|
+
<ItemGroup>
|
183
|
+
<PackageReference Include="Newtonsoft.Json" Version="[13.0.1]" />
|
184
|
+
</ItemGroup>
|
185
|
+
</Project>
|
186
|
+
""");
|
187
|
+
}
|
188
|
+
|
189
|
+
[Fact]
|
190
|
+
public async Task AddPackageReference_InProjectFile_ForTransientDependency()
|
191
|
+
{
|
192
|
+
// add transient System.Text.Json from 5.0.1 to 5.0.2
|
193
|
+
await TestUpdateForProject("System.Text.Json", "5.0.1", "5.0.2", isTransitive: true,
|
194
|
+
// initial
|
195
|
+
projectContents: """
|
196
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
197
|
+
|
198
|
+
<PropertyGroup>
|
199
|
+
<TargetFramework>netcoreapp3.1</TargetFramework>
|
200
|
+
</PropertyGroup>
|
201
|
+
|
202
|
+
<ItemGroup>
|
203
|
+
<PackageReference Include="Mongo2Go" Version="3.1.3" />
|
204
|
+
</ItemGroup>
|
205
|
+
|
206
|
+
</Project>
|
207
|
+
""",
|
208
|
+
// expected
|
209
|
+
expectedProjectContents: """
|
210
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
211
|
+
|
212
|
+
<PropertyGroup>
|
213
|
+
<TargetFramework>netcoreapp3.1</TargetFramework>
|
214
|
+
</PropertyGroup>
|
215
|
+
|
216
|
+
<ItemGroup>
|
217
|
+
<PackageReference Include="Mongo2Go" Version="3.1.3" />
|
218
|
+
<PackageReference Include="System.Text.Json" Version="5.0.2" />
|
219
|
+
</ItemGroup>
|
220
|
+
|
221
|
+
</Project>
|
222
|
+
""");
|
223
|
+
}
|
224
|
+
|
225
|
+
[Fact]
|
226
|
+
public async Task UpdateVersionAttribute_InProjectFile_ForAnalyzerPackageReferenceInclude()
|
227
|
+
{
|
228
|
+
// update Microsoft.CodeAnalysis.Analyzers from 3.3.0 to 3.3.4
|
229
|
+
await TestUpdateForProject("Microsoft.CodeAnalysis.Analyzers", "3.3.0", "3.3.4",
|
230
|
+
// initial
|
231
|
+
projectContents: """
|
232
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
233
|
+
<PropertyGroup>
|
234
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
235
|
+
</PropertyGroup>
|
236
|
+
|
237
|
+
<ItemGroup>
|
238
|
+
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.0">
|
239
|
+
<PrivateAssets>all</PrivateAssets>
|
240
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
241
|
+
</PackageReference>
|
242
|
+
</ItemGroup>
|
243
|
+
</Project>
|
244
|
+
""",
|
245
|
+
// expected
|
246
|
+
expectedProjectContents: """
|
247
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
248
|
+
<PropertyGroup>
|
249
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
250
|
+
</PropertyGroup>
|
251
|
+
|
252
|
+
<ItemGroup>
|
253
|
+
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.4">
|
254
|
+
<PrivateAssets>all</PrivateAssets>
|
255
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
256
|
+
</PackageReference>
|
257
|
+
</ItemGroup>
|
258
|
+
</Project>
|
259
|
+
""");
|
260
|
+
}
|
261
|
+
|
262
|
+
[Fact]
|
263
|
+
public async Task UpdateVersionAttribute_InProjectFile_ForMultiplePackageReferences()
|
264
|
+
{
|
265
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
266
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
267
|
+
// initial
|
268
|
+
projectContents: """
|
269
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
270
|
+
<PropertyGroup>
|
271
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
272
|
+
</PropertyGroup>
|
273
|
+
|
274
|
+
<ItemGroup>
|
275
|
+
<PackageReference Include="Newtonsoft.JSON" Version="9.0.1" />
|
276
|
+
<PackageReference Update="Newtonsoft.Json" Version="9.0.1" />
|
277
|
+
</ItemGroup>
|
278
|
+
</Project>
|
279
|
+
""",
|
280
|
+
// expected
|
281
|
+
expectedProjectContents: """
|
282
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
283
|
+
<PropertyGroup>
|
284
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
285
|
+
</PropertyGroup>
|
286
|
+
|
287
|
+
<ItemGroup>
|
288
|
+
<PackageReference Include="Newtonsoft.JSON" Version="13.0.1" />
|
289
|
+
<PackageReference Update="Newtonsoft.Json" Version="13.0.1" />
|
290
|
+
</ItemGroup>
|
291
|
+
</Project>
|
292
|
+
""");
|
293
|
+
}
|
294
|
+
|
295
|
+
[Fact]
|
296
|
+
public async Task UpdateVersionAttribute_InProjectFile_ForPackageReferenceUpdate()
|
297
|
+
{
|
298
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
299
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
300
|
+
// initial
|
301
|
+
projectContents: """
|
302
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
303
|
+
<PropertyGroup>
|
304
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
305
|
+
</PropertyGroup>
|
306
|
+
|
307
|
+
<ItemGroup>
|
308
|
+
<PackageReference Include="Newtonsoft.Json" />
|
309
|
+
<PackageReference Update="Newtonsoft.Json" Version="9.0.1" />
|
310
|
+
</ItemGroup>
|
311
|
+
</Project>
|
312
|
+
""",
|
313
|
+
// expected
|
314
|
+
expectedProjectContents: """
|
315
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
316
|
+
<PropertyGroup>
|
317
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
318
|
+
</PropertyGroup>
|
319
|
+
|
320
|
+
<ItemGroup>
|
321
|
+
<PackageReference Include="Newtonsoft.Json" />
|
322
|
+
<PackageReference Update="Newtonsoft.Json" Version="13.0.1" />
|
323
|
+
</ItemGroup>
|
324
|
+
</Project>
|
325
|
+
""");
|
326
|
+
}
|
327
|
+
|
328
|
+
[Fact]
|
329
|
+
public async Task UpdateVersionAttribute_InDirectoryPackages_ForPackageVersion()
|
330
|
+
{
|
331
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
332
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
333
|
+
// initial
|
334
|
+
projectContents: """
|
335
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
336
|
+
<PropertyGroup>
|
337
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
338
|
+
</PropertyGroup>
|
339
|
+
|
340
|
+
<ItemGroup>
|
341
|
+
<PackageReference Include="Newtonsoft.Json" />
|
342
|
+
</ItemGroup>
|
343
|
+
</Project>
|
344
|
+
""",
|
345
|
+
additionalFiles: new[]
|
346
|
+
{
|
347
|
+
("Directory.Packages.props", """
|
348
|
+
<Project>
|
349
|
+
<PropertyGroup>
|
350
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
351
|
+
</PropertyGroup>
|
352
|
+
|
353
|
+
<ItemGroup>
|
354
|
+
<PackageVersion Include="Newtonsoft.Json" Version="9.0.1" />
|
355
|
+
</ItemGroup>
|
356
|
+
</Project>
|
357
|
+
""")
|
358
|
+
},
|
359
|
+
// expected
|
360
|
+
expectedProjectContents: """
|
361
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
362
|
+
<PropertyGroup>
|
363
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
364
|
+
</PropertyGroup>
|
365
|
+
|
366
|
+
<ItemGroup>
|
367
|
+
<PackageReference Include="Newtonsoft.Json" />
|
368
|
+
</ItemGroup>
|
369
|
+
</Project>
|
370
|
+
""",
|
371
|
+
additionalFilesExpected: new[]
|
372
|
+
{
|
373
|
+
("Directory.Packages.props", """
|
374
|
+
<Project>
|
375
|
+
<PropertyGroup>
|
376
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
377
|
+
</PropertyGroup>
|
378
|
+
|
379
|
+
<ItemGroup>
|
380
|
+
<PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
|
381
|
+
</ItemGroup>
|
382
|
+
</Project>
|
383
|
+
""")
|
384
|
+
});
|
385
|
+
}
|
386
|
+
|
387
|
+
[Fact]
|
388
|
+
public async Task UpdateExactMatchVersionAttribute_InDirectoryPackages_ForPackageVersion()
|
389
|
+
{
|
390
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
391
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
392
|
+
// initial
|
393
|
+
projectContents: """
|
394
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
395
|
+
<PropertyGroup>
|
396
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
397
|
+
</PropertyGroup>
|
398
|
+
|
399
|
+
<ItemGroup>
|
400
|
+
<PackageReference Include="Newtonsoft.Json" />
|
401
|
+
</ItemGroup>
|
402
|
+
</Project>
|
403
|
+
""",
|
404
|
+
additionalFiles: new[]
|
405
|
+
{
|
406
|
+
("Directory.Packages.props", """
|
407
|
+
<Project>
|
408
|
+
<PropertyGroup>
|
409
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
410
|
+
</PropertyGroup>
|
411
|
+
|
412
|
+
<ItemGroup>
|
413
|
+
<PackageVersion Include="Newtonsoft.Json" Version="[9.0.1]" />
|
414
|
+
</ItemGroup>
|
415
|
+
</Project>
|
416
|
+
""")
|
417
|
+
},
|
418
|
+
// expected
|
419
|
+
expectedProjectContents: """
|
420
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
421
|
+
<PropertyGroup>
|
422
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
423
|
+
</PropertyGroup>
|
424
|
+
|
425
|
+
<ItemGroup>
|
426
|
+
<PackageReference Include="Newtonsoft.Json" />
|
427
|
+
</ItemGroup>
|
428
|
+
</Project>
|
429
|
+
""",
|
430
|
+
additionalFilesExpected: new[]
|
431
|
+
{
|
432
|
+
("Directory.Packages.props", """
|
433
|
+
<Project>
|
434
|
+
<PropertyGroup>
|
435
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
436
|
+
</PropertyGroup>
|
437
|
+
|
438
|
+
<ItemGroup>
|
439
|
+
<PackageVersion Include="Newtonsoft.Json" Version="[13.0.1]" />
|
440
|
+
</ItemGroup>
|
441
|
+
</Project>
|
442
|
+
""")
|
443
|
+
});
|
444
|
+
}
|
445
|
+
|
446
|
+
[Fact]
|
447
|
+
public async Task UpdatePropertyValue_InProjectFile_ForPackageReferenceIncludeWithExactVersion()
|
448
|
+
{
|
449
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
450
|
+
// initial
|
451
|
+
projectContents: """
|
452
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
453
|
+
<PropertyGroup>
|
454
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
455
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
456
|
+
</PropertyGroup>
|
457
|
+
|
458
|
+
<ItemGroup>
|
459
|
+
<PackageReference Include="Newtonsoft.Json" Version="[$(NewtonsoftJsonPackageVersion)]" />
|
460
|
+
</ItemGroup>
|
461
|
+
</Project>
|
462
|
+
""",
|
463
|
+
// expected
|
464
|
+
expectedProjectContents: """
|
465
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
466
|
+
<PropertyGroup>
|
467
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
468
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
469
|
+
</PropertyGroup>
|
470
|
+
|
471
|
+
<ItemGroup>
|
472
|
+
<PackageReference Include="Newtonsoft.Json" Version="[$(NewtonsoftJsonPackageVersion)]" />
|
473
|
+
</ItemGroup>
|
474
|
+
</Project>
|
475
|
+
""");
|
476
|
+
}
|
477
|
+
|
478
|
+
[Fact]
|
479
|
+
public async Task UpdateDifferentCasedPropertyValue_InProjectFile_ForPackageReferenceInclude()
|
480
|
+
{
|
481
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
482
|
+
// initial
|
483
|
+
projectContents: """
|
484
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
485
|
+
<PropertyGroup>
|
486
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
487
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
488
|
+
</PropertyGroup>
|
489
|
+
|
490
|
+
<ItemGroup>
|
491
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(newtonsoftjsonpackageversion)" />
|
492
|
+
</ItemGroup>
|
493
|
+
</Project>
|
494
|
+
""",
|
495
|
+
// expected
|
496
|
+
expectedProjectContents: """
|
497
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
498
|
+
<PropertyGroup>
|
499
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
500
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
501
|
+
</PropertyGroup>
|
502
|
+
|
503
|
+
<ItemGroup>
|
504
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(newtonsoftjsonpackageversion)" />
|
505
|
+
</ItemGroup>
|
506
|
+
</Project>
|
507
|
+
""");
|
508
|
+
}
|
509
|
+
|
510
|
+
[Fact]
|
511
|
+
public async Task UpdatePropertyValue_InProjectFile_ForPackageReferenceInclude()
|
512
|
+
{
|
513
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
514
|
+
// initial
|
515
|
+
projectContents: """
|
516
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
517
|
+
<PropertyGroup>
|
518
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
519
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
520
|
+
</PropertyGroup>
|
521
|
+
|
522
|
+
<ItemGroup>
|
523
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
524
|
+
</ItemGroup>
|
525
|
+
</Project>
|
526
|
+
""",
|
527
|
+
// expected
|
528
|
+
expectedProjectContents: """
|
529
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
530
|
+
<PropertyGroup>
|
531
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
532
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
533
|
+
</PropertyGroup>
|
534
|
+
|
535
|
+
<ItemGroup>
|
536
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
537
|
+
</ItemGroup>
|
538
|
+
</Project>
|
539
|
+
""");
|
540
|
+
}
|
541
|
+
|
542
|
+
[Fact]
|
543
|
+
public async Task UpdateExactMatchPropertyValue_InProjectFile_ForPackageReferenceInclude()
|
544
|
+
{
|
545
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
546
|
+
// initial
|
547
|
+
projectContents: """
|
548
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
549
|
+
<PropertyGroup>
|
550
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
551
|
+
<NewtonsoftJsonPackageVersion>[9.0.1]</NewtonsoftJsonPackageVersion>
|
552
|
+
</PropertyGroup>
|
553
|
+
|
554
|
+
<ItemGroup>
|
555
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
556
|
+
</ItemGroup>
|
557
|
+
</Project>
|
558
|
+
""",
|
559
|
+
// expected
|
560
|
+
expectedProjectContents: """
|
561
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
562
|
+
<PropertyGroup>
|
563
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
564
|
+
<NewtonsoftJsonPackageVersion>[13.0.1]</NewtonsoftJsonPackageVersion>
|
565
|
+
</PropertyGroup>
|
566
|
+
|
567
|
+
<ItemGroup>
|
568
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
569
|
+
</ItemGroup>
|
570
|
+
</Project>
|
571
|
+
""");
|
572
|
+
}
|
573
|
+
|
574
|
+
[Fact]
|
575
|
+
public async Task UpdateVersionAttributeAndPropertyValue_InProjectFile_ForMultiplePackageReferences()
|
576
|
+
{
|
577
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
578
|
+
// initial
|
579
|
+
projectContents: """
|
580
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
581
|
+
<PropertyGroup>
|
582
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
583
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
584
|
+
</PropertyGroup>
|
585
|
+
|
586
|
+
<ItemGroup>
|
587
|
+
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
|
588
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
589
|
+
</ItemGroup>
|
590
|
+
</Project>
|
591
|
+
""",
|
592
|
+
// expected
|
593
|
+
expectedProjectContents: """
|
594
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
595
|
+
<PropertyGroup>
|
596
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
597
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
598
|
+
</PropertyGroup>
|
599
|
+
|
600
|
+
<ItemGroup>
|
601
|
+
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
602
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
603
|
+
</ItemGroup>
|
604
|
+
</Project>
|
605
|
+
""");
|
606
|
+
}
|
607
|
+
|
608
|
+
[Fact]
|
609
|
+
public async Task UpdatePropertyValue_InProjectFile_ForPackageReferenceUpdate()
|
610
|
+
{
|
611
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
612
|
+
// initial
|
613
|
+
projectContents: """
|
614
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
615
|
+
<PropertyGroup>
|
616
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
617
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
618
|
+
</PropertyGroup>
|
619
|
+
|
620
|
+
<ItemGroup>
|
621
|
+
<PackageReference Include="Newtonsoft.Json" />
|
622
|
+
<PackageReference Update="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
623
|
+
</ItemGroup>
|
624
|
+
</Project>
|
625
|
+
""",
|
626
|
+
// expected
|
627
|
+
expectedProjectContents: """
|
628
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
629
|
+
<PropertyGroup>
|
630
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
631
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
632
|
+
</PropertyGroup>
|
633
|
+
|
634
|
+
<ItemGroup>
|
635
|
+
<PackageReference Include="Newtonsoft.Json" />
|
636
|
+
<PackageReference Update="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
637
|
+
</ItemGroup>
|
638
|
+
</Project>
|
639
|
+
""");
|
640
|
+
}
|
641
|
+
|
642
|
+
[Fact]
|
643
|
+
public async Task UpdatePropertyValue_InDirectoryProps_ForPackageVersion()
|
644
|
+
{
|
645
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
646
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
647
|
+
// initial
|
648
|
+
projectContents: """
|
649
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
650
|
+
<PropertyGroup>
|
651
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
652
|
+
</PropertyGroup>
|
653
|
+
|
654
|
+
<ItemGroup>
|
655
|
+
<PackageReference Include="Newtonsoft.Json" />
|
656
|
+
</ItemGroup>
|
657
|
+
</Project>
|
658
|
+
""",
|
659
|
+
additionalFiles: new[]
|
660
|
+
{
|
661
|
+
("Directory.Packages.props", """
|
662
|
+
<Project>
|
663
|
+
<PropertyGroup>
|
664
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
665
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
666
|
+
</PropertyGroup>
|
667
|
+
|
668
|
+
<ItemGroup>
|
669
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
670
|
+
</ItemGroup>
|
671
|
+
</Project>
|
672
|
+
""")
|
673
|
+
},
|
674
|
+
// expected
|
675
|
+
expectedProjectContents: """
|
676
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
677
|
+
<PropertyGroup>
|
678
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
679
|
+
</PropertyGroup>
|
680
|
+
|
681
|
+
<ItemGroup>
|
682
|
+
<PackageReference Include="Newtonsoft.Json" />
|
683
|
+
</ItemGroup>
|
684
|
+
</Project>
|
685
|
+
""",
|
686
|
+
additionalFilesExpected: new[]
|
687
|
+
{
|
688
|
+
("Directory.Packages.props", """
|
689
|
+
<Project>
|
690
|
+
<PropertyGroup>
|
691
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
692
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
693
|
+
</PropertyGroup>
|
694
|
+
|
695
|
+
<ItemGroup>
|
696
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
697
|
+
</ItemGroup>
|
698
|
+
</Project>
|
699
|
+
""")
|
700
|
+
});
|
701
|
+
}
|
702
|
+
|
703
|
+
[Fact]
|
704
|
+
public async Task UpdateExactMatchPropertyValue_InDirectoryProps_ForPackageVersion()
|
705
|
+
{
|
706
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
707
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
708
|
+
// initial
|
709
|
+
projectContents: """
|
710
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
711
|
+
<PropertyGroup>
|
712
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
713
|
+
</PropertyGroup>
|
714
|
+
|
715
|
+
<ItemGroup>
|
716
|
+
<PackageReference Include="Newtonsoft.Json" />
|
717
|
+
</ItemGroup>
|
718
|
+
</Project>
|
719
|
+
""",
|
720
|
+
additionalFiles: new[]
|
721
|
+
{
|
722
|
+
("Directory.Packages.props", """
|
723
|
+
<Project>
|
724
|
+
<PropertyGroup>
|
725
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
726
|
+
<NewtonsoftJsonPackageVersion>[9.0.1]</NewtonsoftJsonPackageVersion>
|
727
|
+
</PropertyGroup>
|
728
|
+
|
729
|
+
<ItemGroup>
|
730
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
731
|
+
</ItemGroup>
|
732
|
+
</Project>
|
733
|
+
""")
|
734
|
+
},
|
735
|
+
// expected
|
736
|
+
expectedProjectContents: """
|
737
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
738
|
+
<PropertyGroup>
|
739
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
740
|
+
</PropertyGroup>
|
741
|
+
|
742
|
+
<ItemGroup>
|
743
|
+
<PackageReference Include="Newtonsoft.Json" />
|
744
|
+
</ItemGroup>
|
745
|
+
</Project>
|
746
|
+
""",
|
747
|
+
additionalFilesExpected: new[]
|
748
|
+
{
|
749
|
+
("Directory.Packages.props", """
|
750
|
+
<Project>
|
751
|
+
<PropertyGroup>
|
752
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
753
|
+
<NewtonsoftJsonPackageVersion>[13.0.1]</NewtonsoftJsonPackageVersion>
|
754
|
+
</PropertyGroup>
|
755
|
+
|
756
|
+
<ItemGroup>
|
757
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
758
|
+
</ItemGroup>
|
759
|
+
</Project>
|
760
|
+
""")
|
761
|
+
});
|
762
|
+
}
|
763
|
+
|
764
|
+
[Fact]
|
765
|
+
public async Task UpdateVersionOverrideAttributeAndPropertyValue_InProjectFileAndDirectoryProps_ForPackageVersion()
|
766
|
+
{
|
767
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
768
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
769
|
+
// initial
|
770
|
+
projectContents: """
|
771
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
772
|
+
<PropertyGroup>
|
773
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
774
|
+
</PropertyGroup>
|
775
|
+
|
776
|
+
<ItemGroup>
|
777
|
+
<PackageReference Include="Newtonsoft.Json" VersionOverride="9.0.1" />
|
778
|
+
</ItemGroup>
|
779
|
+
</Project>
|
780
|
+
""",
|
781
|
+
additionalFiles: new[]
|
782
|
+
{
|
783
|
+
("Directory.Packages.props", """
|
784
|
+
<Project>
|
785
|
+
<PropertyGroup>
|
786
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
787
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
788
|
+
</PropertyGroup>
|
789
|
+
|
790
|
+
<ItemGroup>
|
791
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
792
|
+
</ItemGroup>
|
793
|
+
</Project>
|
794
|
+
""")
|
795
|
+
},
|
796
|
+
// expected
|
797
|
+
expectedProjectContents: """
|
798
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
799
|
+
<PropertyGroup>
|
800
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
801
|
+
</PropertyGroup>
|
802
|
+
|
803
|
+
<ItemGroup>
|
804
|
+
<PackageReference Include="Newtonsoft.Json" VersionOverride="13.0.1" />
|
805
|
+
</ItemGroup>
|
806
|
+
</Project>
|
807
|
+
""",
|
808
|
+
additionalFilesExpected: new[]
|
809
|
+
{
|
810
|
+
("Directory.Packages.props", """
|
811
|
+
<Project>
|
812
|
+
<PropertyGroup>
|
813
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
814
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
815
|
+
</PropertyGroup>
|
816
|
+
|
817
|
+
<ItemGroup>
|
818
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
819
|
+
</ItemGroup>
|
820
|
+
</Project>
|
821
|
+
""")
|
822
|
+
});
|
823
|
+
}
|
824
|
+
|
825
|
+
[Fact]
|
826
|
+
public async Task UpdateVersionAttribute_InDirectoryProps_ForGlobalPackageReference()
|
827
|
+
{
|
828
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
829
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
830
|
+
// initial
|
831
|
+
projectContents: """
|
832
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
833
|
+
<PropertyGroup>
|
834
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
835
|
+
</PropertyGroup>
|
836
|
+
</Project>
|
837
|
+
""",
|
838
|
+
additionalFiles: new[]
|
839
|
+
{
|
840
|
+
("Directory.Packages.props", """
|
841
|
+
<Project>
|
842
|
+
<PropertyGroup>
|
843
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
844
|
+
</PropertyGroup>
|
845
|
+
|
846
|
+
<ItemGroup>
|
847
|
+
<GlobalPackageReference Include="Newtonsoft.Json" Version="9.0.1" />
|
848
|
+
</ItemGroup>
|
849
|
+
</Project>
|
850
|
+
""")
|
851
|
+
},
|
852
|
+
// expected
|
853
|
+
expectedProjectContents: """
|
854
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
855
|
+
<PropertyGroup>
|
856
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
857
|
+
</PropertyGroup>
|
858
|
+
</Project>
|
859
|
+
""",
|
860
|
+
additionalFilesExpected: new[]
|
861
|
+
{
|
862
|
+
("Directory.Packages.props", """
|
863
|
+
<Project>
|
864
|
+
<PropertyGroup>
|
865
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
866
|
+
</PropertyGroup>
|
867
|
+
|
868
|
+
<ItemGroup>
|
869
|
+
<GlobalPackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
870
|
+
</ItemGroup>
|
871
|
+
</Project>
|
872
|
+
""")
|
873
|
+
});
|
874
|
+
}
|
875
|
+
|
876
|
+
[Fact]
|
877
|
+
public async Task UpdatePropertyValue_InDirectoryProps_ForGlobalPackageReference()
|
878
|
+
{
|
879
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
880
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
881
|
+
// initial
|
882
|
+
projectContents: """
|
883
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
884
|
+
<PropertyGroup>
|
885
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
886
|
+
</PropertyGroup>
|
887
|
+
</Project>
|
888
|
+
""",
|
889
|
+
additionalFiles: new[]
|
890
|
+
{
|
891
|
+
("Directory.Packages.props", """
|
892
|
+
<Project>
|
893
|
+
<PropertyGroup>
|
894
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
895
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
896
|
+
</PropertyGroup>
|
897
|
+
|
898
|
+
<ItemGroup>
|
899
|
+
<GlobalPackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
900
|
+
</ItemGroup>
|
901
|
+
</Project>
|
902
|
+
""")
|
903
|
+
},
|
904
|
+
// expected
|
905
|
+
expectedProjectContents: """
|
906
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
907
|
+
<PropertyGroup>
|
908
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
909
|
+
</PropertyGroup>
|
910
|
+
</Project>
|
911
|
+
""",
|
912
|
+
additionalFilesExpected: new[]
|
913
|
+
{
|
914
|
+
("Directory.Packages.props", """
|
915
|
+
<Project>
|
916
|
+
<PropertyGroup>
|
917
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
918
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
919
|
+
</PropertyGroup>
|
920
|
+
|
921
|
+
<ItemGroup>
|
922
|
+
<GlobalPackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
923
|
+
</ItemGroup>
|
924
|
+
</Project>
|
925
|
+
""")
|
926
|
+
});
|
927
|
+
}
|
928
|
+
|
929
|
+
[Fact]
|
930
|
+
public async Task UpdatePropertyValue_InDirectoryProps_ForPackageReferenceInclude()
|
931
|
+
{
|
932
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
933
|
+
// initial project
|
934
|
+
projectContents: """
|
935
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
936
|
+
<PropertyGroup>
|
937
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
938
|
+
</PropertyGroup>
|
939
|
+
|
940
|
+
<ItemGroup>
|
941
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
942
|
+
</ItemGroup>
|
943
|
+
</Project>
|
944
|
+
""",
|
945
|
+
additionalFiles: new[]
|
946
|
+
{
|
947
|
+
// initial props file
|
948
|
+
("Directory.Build.props", """
|
949
|
+
<Project>
|
950
|
+
<PropertyGroup>
|
951
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
952
|
+
</PropertyGroup>
|
953
|
+
</Project>
|
954
|
+
""")
|
955
|
+
},
|
956
|
+
// expected project
|
957
|
+
expectedProjectContents: """
|
958
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
959
|
+
<PropertyGroup>
|
960
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
961
|
+
</PropertyGroup>
|
962
|
+
|
963
|
+
<ItemGroup>
|
964
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
965
|
+
</ItemGroup>
|
966
|
+
</Project>
|
967
|
+
""",
|
968
|
+
additionalFilesExpected: new[]
|
969
|
+
{
|
970
|
+
// expected props file
|
971
|
+
("Directory.Build.props", """
|
972
|
+
<Project>
|
973
|
+
<PropertyGroup>
|
974
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
975
|
+
</PropertyGroup>
|
976
|
+
</Project>
|
977
|
+
""")
|
978
|
+
});
|
979
|
+
}
|
980
|
+
|
981
|
+
[Fact]
|
982
|
+
public async Task UpdatePropertyValue_InProps_ForPackageReferenceInclude()
|
983
|
+
{
|
984
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
985
|
+
// initial project
|
986
|
+
projectContents: """
|
987
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
988
|
+
<Import Project="my-properties.props" />
|
989
|
+
|
990
|
+
<PropertyGroup>
|
991
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
992
|
+
</PropertyGroup>
|
993
|
+
|
994
|
+
<ItemGroup>
|
995
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
996
|
+
</ItemGroup>
|
997
|
+
</Project>
|
998
|
+
""",
|
999
|
+
additionalFiles: new[]
|
1000
|
+
{
|
1001
|
+
// initial props file
|
1002
|
+
("my-properties.props", """
|
1003
|
+
<Project>
|
1004
|
+
<PropertyGroup>
|
1005
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
1006
|
+
</PropertyGroup>
|
1007
|
+
</Project>
|
1008
|
+
""")
|
1009
|
+
},
|
1010
|
+
// expected project
|
1011
|
+
expectedProjectContents: """
|
1012
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1013
|
+
<Import Project="my-properties.props" />
|
1014
|
+
|
1015
|
+
<PropertyGroup>
|
1016
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1017
|
+
</PropertyGroup>
|
1018
|
+
|
1019
|
+
<ItemGroup>
|
1020
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
1021
|
+
</ItemGroup>
|
1022
|
+
</Project>
|
1023
|
+
""",
|
1024
|
+
additionalFilesExpected: new[]
|
1025
|
+
{
|
1026
|
+
// expected props file
|
1027
|
+
("my-properties.props", """
|
1028
|
+
<Project>
|
1029
|
+
<PropertyGroup>
|
1030
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
1031
|
+
</PropertyGroup>
|
1032
|
+
</Project>
|
1033
|
+
""")
|
1034
|
+
});
|
1035
|
+
}
|
1036
|
+
|
1037
|
+
[Fact]
|
1038
|
+
public async Task UpdatePropertyValue_InProps_ForPackageVersion()
|
1039
|
+
{
|
1040
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
1041
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
1042
|
+
// initial
|
1043
|
+
projectContents: """
|
1044
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1045
|
+
<PropertyGroup>
|
1046
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1047
|
+
</PropertyGroup>
|
1048
|
+
|
1049
|
+
<ItemGroup>
|
1050
|
+
<PackageReference Include="Newtonsoft.Json" />
|
1051
|
+
</ItemGroup>
|
1052
|
+
</Project>
|
1053
|
+
""",
|
1054
|
+
additionalFiles: new[]
|
1055
|
+
{
|
1056
|
+
// initial props files
|
1057
|
+
("Directory.Packages.props", """
|
1058
|
+
<Project>
|
1059
|
+
<Import Project="Version.props" />
|
1060
|
+
<PropertyGroup>
|
1061
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1062
|
+
</PropertyGroup>
|
1063
|
+
|
1064
|
+
<ItemGroup>
|
1065
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
1066
|
+
</ItemGroup>
|
1067
|
+
</Project>
|
1068
|
+
"""),
|
1069
|
+
("Version.props", """
|
1070
|
+
<Project>
|
1071
|
+
<PropertyGroup>
|
1072
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
1073
|
+
</PropertyGroup>
|
1074
|
+
</Project>
|
1075
|
+
""")
|
1076
|
+
},
|
1077
|
+
// expected
|
1078
|
+
expectedProjectContents: """
|
1079
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1080
|
+
<PropertyGroup>
|
1081
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1082
|
+
</PropertyGroup>
|
1083
|
+
|
1084
|
+
<ItemGroup>
|
1085
|
+
<PackageReference Include="Newtonsoft.Json" />
|
1086
|
+
</ItemGroup>
|
1087
|
+
</Project>
|
1088
|
+
""",
|
1089
|
+
additionalFilesExpected: new[]
|
1090
|
+
{
|
1091
|
+
// expected props files
|
1092
|
+
("Directory.Packages.props", """
|
1093
|
+
<Project>
|
1094
|
+
<Import Project="Version.props" />
|
1095
|
+
<PropertyGroup>
|
1096
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1097
|
+
</PropertyGroup>
|
1098
|
+
|
1099
|
+
<ItemGroup>
|
1100
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
1101
|
+
</ItemGroup>
|
1102
|
+
</Project>
|
1103
|
+
"""),
|
1104
|
+
("Version.props", """
|
1105
|
+
<Project>
|
1106
|
+
<PropertyGroup>
|
1107
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
1108
|
+
</PropertyGroup>
|
1109
|
+
</Project>
|
1110
|
+
""")
|
1111
|
+
});
|
1112
|
+
}
|
1113
|
+
|
1114
|
+
[Fact]
|
1115
|
+
public async Task UpdatePropertyValue_InProps_ThenSubstituted_ForPackageVersion()
|
1116
|
+
{
|
1117
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
1118
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
1119
|
+
// initial
|
1120
|
+
projectContents: """
|
1121
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1122
|
+
<PropertyGroup>
|
1123
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1124
|
+
</PropertyGroup>
|
1125
|
+
|
1126
|
+
<ItemGroup>
|
1127
|
+
<PackageReference Include="Newtonsoft.Json" />
|
1128
|
+
</ItemGroup>
|
1129
|
+
</Project>
|
1130
|
+
""",
|
1131
|
+
additionalFiles: new[]
|
1132
|
+
{
|
1133
|
+
// initial props files
|
1134
|
+
("Directory.Packages.props", """
|
1135
|
+
<Project>
|
1136
|
+
<Import Project="Version.props" />
|
1137
|
+
<PropertyGroup>
|
1138
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1139
|
+
<NewtonsoftJsonPackageVersion>$(NewtonsoftJsonVersion)</NewtonsoftJsonPackageVersion>
|
1140
|
+
</PropertyGroup>
|
1141
|
+
|
1142
|
+
<ItemGroup>
|
1143
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
1144
|
+
</ItemGroup>
|
1145
|
+
</Project>
|
1146
|
+
"""),
|
1147
|
+
("Version.props", """
|
1148
|
+
<Project>
|
1149
|
+
<PropertyGroup>
|
1150
|
+
<NewtonsoftJsonVersion>9.0.1</NewtonsoftJsonVersion>
|
1151
|
+
</PropertyGroup>
|
1152
|
+
</Project>
|
1153
|
+
""")
|
1154
|
+
},
|
1155
|
+
// expected
|
1156
|
+
expectedProjectContents: """
|
1157
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1158
|
+
<PropertyGroup>
|
1159
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1160
|
+
</PropertyGroup>
|
1161
|
+
|
1162
|
+
<ItemGroup>
|
1163
|
+
<PackageReference Include="Newtonsoft.Json" />
|
1164
|
+
</ItemGroup>
|
1165
|
+
</Project>
|
1166
|
+
""",
|
1167
|
+
additionalFilesExpected: new[]
|
1168
|
+
{
|
1169
|
+
// expected props files
|
1170
|
+
("Directory.Packages.props", """
|
1171
|
+
<Project>
|
1172
|
+
<Import Project="Version.props" />
|
1173
|
+
<PropertyGroup>
|
1174
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1175
|
+
<NewtonsoftJsonPackageVersion>$(NewtonsoftJsonVersion)</NewtonsoftJsonPackageVersion>
|
1176
|
+
</PropertyGroup>
|
1177
|
+
|
1178
|
+
<ItemGroup>
|
1179
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
1180
|
+
</ItemGroup>
|
1181
|
+
</Project>
|
1182
|
+
"""),
|
1183
|
+
("Version.props", """
|
1184
|
+
<Project>
|
1185
|
+
<PropertyGroup>
|
1186
|
+
<NewtonsoftJsonVersion>13.0.1</NewtonsoftJsonVersion>
|
1187
|
+
</PropertyGroup>
|
1188
|
+
</Project>
|
1189
|
+
""")
|
1190
|
+
});
|
1191
|
+
}
|
1192
|
+
|
1193
|
+
[Fact]
|
1194
|
+
public async Task UpdatePropertyValues_InProps_ThenRedefinedAndSubstituted_ForPackageVersion()
|
1195
|
+
{
|
1196
|
+
// update Newtonsoft.Json from 9.0.1 to 13.0.1
|
1197
|
+
await TestUpdateForProject("Newtonsoft.Json", "9.0.1", "13.0.1",
|
1198
|
+
// initial
|
1199
|
+
projectContents: """
|
1200
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1201
|
+
<PropertyGroup>
|
1202
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1203
|
+
</PropertyGroup>
|
1204
|
+
|
1205
|
+
<ItemGroup>
|
1206
|
+
<PackageReference Include="Newtonsoft.Json" />
|
1207
|
+
</ItemGroup>
|
1208
|
+
</Project>
|
1209
|
+
""",
|
1210
|
+
additionalFiles: new[]
|
1211
|
+
{
|
1212
|
+
// initial props files
|
1213
|
+
("Directory.Packages.props", """
|
1214
|
+
<Project>
|
1215
|
+
<Import Project="Version.props" />
|
1216
|
+
<PropertyGroup>
|
1217
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1218
|
+
<NewtonsoftJsonPackageVersion>$(NewtonsoftJsonVersion)</NewtonsoftJsonPackageVersion>
|
1219
|
+
</PropertyGroup>
|
1220
|
+
|
1221
|
+
<ItemGroup>
|
1222
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
1223
|
+
</ItemGroup>
|
1224
|
+
</Project>
|
1225
|
+
"""),
|
1226
|
+
("Version.props", """
|
1227
|
+
<Project>
|
1228
|
+
<PropertyGroup>
|
1229
|
+
<NewtonsoftJSONVersion>9.0.1</NewtonsoftJSONVersion>
|
1230
|
+
<NewtonsoftJsonPackageVersion>9.0.1</NewtonsoftJsonPackageVersion>
|
1231
|
+
</PropertyGroup>
|
1232
|
+
</Project>
|
1233
|
+
""")
|
1234
|
+
},
|
1235
|
+
// expected
|
1236
|
+
expectedProjectContents: """
|
1237
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1238
|
+
<PropertyGroup>
|
1239
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1240
|
+
</PropertyGroup>
|
1241
|
+
|
1242
|
+
<ItemGroup>
|
1243
|
+
<PackageReference Include="Newtonsoft.Json" />
|
1244
|
+
</ItemGroup>
|
1245
|
+
</Project>
|
1246
|
+
""",
|
1247
|
+
additionalFilesExpected: new[]
|
1248
|
+
{
|
1249
|
+
// expected props files
|
1250
|
+
("Directory.Packages.props", """
|
1251
|
+
<Project>
|
1252
|
+
<Import Project="Version.props" />
|
1253
|
+
<PropertyGroup>
|
1254
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1255
|
+
<NewtonsoftJsonPackageVersion>$(NewtonsoftJsonVersion)</NewtonsoftJsonPackageVersion>
|
1256
|
+
</PropertyGroup>
|
1257
|
+
|
1258
|
+
<ItemGroup>
|
1259
|
+
<PackageVersion Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" />
|
1260
|
+
</ItemGroup>
|
1261
|
+
</Project>
|
1262
|
+
"""),
|
1263
|
+
("Version.props", """
|
1264
|
+
<Project>
|
1265
|
+
<PropertyGroup>
|
1266
|
+
<NewtonsoftJSONVersion>13.0.1</NewtonsoftJSONVersion>
|
1267
|
+
<NewtonsoftJsonPackageVersion>13.0.1</NewtonsoftJsonPackageVersion>
|
1268
|
+
</PropertyGroup>
|
1269
|
+
</Project>
|
1270
|
+
""")
|
1271
|
+
});
|
1272
|
+
}
|
1273
|
+
|
1274
|
+
[Fact]
|
1275
|
+
public async Task UpdatePeerDependencyWithInlineVersion()
|
1276
|
+
{
|
1277
|
+
await TestUpdateForProject("Microsoft.Extensions.Http", "2.2.0", "7.0.0",
|
1278
|
+
projectContents: """
|
1279
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1280
|
+
<PropertyGroup>
|
1281
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1282
|
+
</PropertyGroup>
|
1283
|
+
<ItemGroup>
|
1284
|
+
<PackageReference Include="Microsoft.Extensions.Http" Version="2.2.0" />
|
1285
|
+
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
|
1286
|
+
</ItemGroup>
|
1287
|
+
</Project>
|
1288
|
+
""",
|
1289
|
+
expectedProjectContents: """
|
1290
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1291
|
+
<PropertyGroup>
|
1292
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1293
|
+
</PropertyGroup>
|
1294
|
+
<ItemGroup>
|
1295
|
+
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" />
|
1296
|
+
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
|
1297
|
+
</ItemGroup>
|
1298
|
+
</Project>
|
1299
|
+
""");
|
1300
|
+
}
|
1301
|
+
|
1302
|
+
[Fact]
|
1303
|
+
public async Task UpdatePeerDependencyFromPropertyInSameFile()
|
1304
|
+
{
|
1305
|
+
await TestUpdateForProject("Microsoft.Extensions.Http", "2.2.0", "7.0.0",
|
1306
|
+
projectContents: """
|
1307
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1308
|
+
<PropertyGroup>
|
1309
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1310
|
+
<MicrosoftExtensionsHttpVersion>2.2.0</MicrosoftExtensionsHttpVersion>
|
1311
|
+
<MicrosoftExtensionsLoggingVersion>2.2.0</MicrosoftExtensionsLoggingVersion>
|
1312
|
+
</PropertyGroup>
|
1313
|
+
<ItemGroup>
|
1314
|
+
<PackageReference Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsHttpVersion)" />
|
1315
|
+
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(MicrosoftExtensionsLoggingVersion)" />
|
1316
|
+
</ItemGroup>
|
1317
|
+
</Project>
|
1318
|
+
""",
|
1319
|
+
expectedProjectContents: """
|
1320
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1321
|
+
<PropertyGroup>
|
1322
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1323
|
+
<MicrosoftExtensionsHttpVersion>7.0.0</MicrosoftExtensionsHttpVersion>
|
1324
|
+
<MicrosoftExtensionsLoggingVersion>7.0.0</MicrosoftExtensionsLoggingVersion>
|
1325
|
+
</PropertyGroup>
|
1326
|
+
<ItemGroup>
|
1327
|
+
<PackageReference Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsHttpVersion)" />
|
1328
|
+
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(MicrosoftExtensionsLoggingVersion)" />
|
1329
|
+
</ItemGroup>
|
1330
|
+
</Project>
|
1331
|
+
""");
|
1332
|
+
}
|
1333
|
+
|
1334
|
+
[Fact]
|
1335
|
+
public async Task UpdatePeerDependencyFromPropertyInDifferentFile()
|
1336
|
+
{
|
1337
|
+
await TestUpdateForProject("Microsoft.Extensions.Http", "2.2.0", "7.0.0",
|
1338
|
+
projectContents: """
|
1339
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1340
|
+
<Import Project="Versions.props" />
|
1341
|
+
<PropertyGroup>
|
1342
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1343
|
+
</PropertyGroup>
|
1344
|
+
<ItemGroup>
|
1345
|
+
<PackageReference Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsHttpVersion)" />
|
1346
|
+
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(MicrosoftExtensionsLoggingVersion)" />
|
1347
|
+
</ItemGroup>
|
1348
|
+
</Project>
|
1349
|
+
""",
|
1350
|
+
additionalFiles: new[]
|
1351
|
+
{
|
1352
|
+
("Versions.props", """
|
1353
|
+
<Project>
|
1354
|
+
<PropertyGroup>
|
1355
|
+
<MicrosoftExtensionsHttpVersion>2.2.0</MicrosoftExtensionsHttpVersion>
|
1356
|
+
<MicrosoftExtensionsLoggingVersion>2.2.0</MicrosoftExtensionsLoggingVersion>
|
1357
|
+
</PropertyGroup>
|
1358
|
+
</Project>
|
1359
|
+
""")
|
1360
|
+
},
|
1361
|
+
expectedProjectContents: """
|
1362
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1363
|
+
<Import Project="Versions.props" />
|
1364
|
+
<PropertyGroup>
|
1365
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1366
|
+
</PropertyGroup>
|
1367
|
+
<ItemGroup>
|
1368
|
+
<PackageReference Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsHttpVersion)" />
|
1369
|
+
<PackageReference Include="Microsoft.Extensions.Logging" Version="$(MicrosoftExtensionsLoggingVersion)" />
|
1370
|
+
</ItemGroup>
|
1371
|
+
</Project>
|
1372
|
+
""",
|
1373
|
+
additionalFilesExpected: new[]
|
1374
|
+
{
|
1375
|
+
("Versions.props", """
|
1376
|
+
<Project>
|
1377
|
+
<PropertyGroup>
|
1378
|
+
<MicrosoftExtensionsHttpVersion>7.0.0</MicrosoftExtensionsHttpVersion>
|
1379
|
+
<MicrosoftExtensionsLoggingVersion>7.0.0</MicrosoftExtensionsLoggingVersion>
|
1380
|
+
</PropertyGroup>
|
1381
|
+
</Project>
|
1382
|
+
""")
|
1383
|
+
});
|
1384
|
+
}
|
1385
|
+
|
1386
|
+
[Fact]
|
1387
|
+
public async Task UpdatePeerDependencyWithInlineVersionAndMultipleTfms()
|
1388
|
+
{
|
1389
|
+
await TestUpdateForProject("Microsoft.Extensions.Http", "2.2.0", "7.0.0",
|
1390
|
+
projectContents: """
|
1391
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1392
|
+
<PropertyGroup>
|
1393
|
+
<TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
|
1394
|
+
</PropertyGroup>
|
1395
|
+
<ItemGroup>
|
1396
|
+
<PackageReference Include="Microsoft.Extensions.Http" Version="2.2.0" />
|
1397
|
+
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.2.0" />
|
1398
|
+
</ItemGroup>
|
1399
|
+
</Project>
|
1400
|
+
""",
|
1401
|
+
expectedProjectContents: """
|
1402
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1403
|
+
<PropertyGroup>
|
1404
|
+
<TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
|
1405
|
+
</PropertyGroup>
|
1406
|
+
<ItemGroup>
|
1407
|
+
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" />
|
1408
|
+
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
|
1409
|
+
</ItemGroup>
|
1410
|
+
</Project>
|
1411
|
+
""");
|
1412
|
+
}
|
1413
|
+
|
1414
|
+
[Fact]
|
1415
|
+
public async Task NoUpdateForPeerDependenciesWhichAreHigherVersion()
|
1416
|
+
{
|
1417
|
+
await TestUpdateForProject("Microsoft.Identity.Web", "2.13.0", "2.13.2",
|
1418
|
+
projectContents: """
|
1419
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1420
|
+
<PropertyGroup>
|
1421
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1422
|
+
</PropertyGroup>
|
1423
|
+
<ItemGroup>
|
1424
|
+
<PackageReference Include="Azure.Identity" />
|
1425
|
+
<PackageReference Include="Azure.Security.KeyVault.Keys" />
|
1426
|
+
<PackageReference Include="Azure.Security.KeyVault.Secrets" />
|
1427
|
+
<PackageReference Include="Microsoft.Identity.Web" />
|
1428
|
+
</ItemGroup>
|
1429
|
+
</Project>
|
1430
|
+
""",
|
1431
|
+
additionalFiles: new[]
|
1432
|
+
{
|
1433
|
+
("Directory.Packages.props", """
|
1434
|
+
<Project>
|
1435
|
+
<PropertyGroup>
|
1436
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1437
|
+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
1438
|
+
</PropertyGroup>
|
1439
|
+
<ItemGroup>
|
1440
|
+
<PackageVersion Include="Azure.Identity" Version="1.9.0" />
|
1441
|
+
<PackageVersion Include="Azure.Security.KeyVault.Keys" Version="4.5.0" />
|
1442
|
+
<PackageVersion Include="Azure.Security.KeyVault.Secrets" Version="4.5.0" />
|
1443
|
+
<PackageVersion Include="Microsoft.Identity.Web" Version="2.13.0" />
|
1444
|
+
</ItemGroup>
|
1445
|
+
</Project>
|
1446
|
+
""")
|
1447
|
+
},
|
1448
|
+
expectedProjectContents: """
|
1449
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1450
|
+
<PropertyGroup>
|
1451
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1452
|
+
</PropertyGroup>
|
1453
|
+
<ItemGroup>
|
1454
|
+
<PackageReference Include="Azure.Identity" />
|
1455
|
+
<PackageReference Include="Azure.Security.KeyVault.Keys" />
|
1456
|
+
<PackageReference Include="Azure.Security.KeyVault.Secrets" />
|
1457
|
+
<PackageReference Include="Microsoft.Identity.Web" />
|
1458
|
+
</ItemGroup>
|
1459
|
+
</Project>
|
1460
|
+
""",
|
1461
|
+
additionalFilesExpected: new[]
|
1462
|
+
{
|
1463
|
+
("Directory.Packages.props", """
|
1464
|
+
<Project>
|
1465
|
+
<PropertyGroup>
|
1466
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1467
|
+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
1468
|
+
</PropertyGroup>
|
1469
|
+
<ItemGroup>
|
1470
|
+
<PackageVersion Include="Azure.Identity" Version="1.9.0" />
|
1471
|
+
<PackageVersion Include="Azure.Security.KeyVault.Keys" Version="4.5.0" />
|
1472
|
+
<PackageVersion Include="Azure.Security.KeyVault.Secrets" Version="4.5.0" />
|
1473
|
+
<PackageVersion Include="Microsoft.Identity.Web" Version="2.13.2" />
|
1474
|
+
</ItemGroup>
|
1475
|
+
</Project>
|
1476
|
+
""")
|
1477
|
+
});
|
1478
|
+
}
|
1479
|
+
|
1480
|
+
[Fact]
|
1481
|
+
public async Task UpdatingToNotCompatiblePackageDoesNothing()
|
1482
|
+
{
|
1483
|
+
await TestUpdateForProject("Microsoft.AspNetCore.Authentication.JwtBearer", "3.1.18", "7.0.5",
|
1484
|
+
projectContents: """
|
1485
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1486
|
+
<PropertyGroup>
|
1487
|
+
<TargetFramework>netcoreapp3.1</TargetFramework>
|
1488
|
+
</PropertyGroup>
|
1489
|
+
<ItemGroup>
|
1490
|
+
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.18" />
|
1491
|
+
</ItemGroup>
|
1492
|
+
</Project>
|
1493
|
+
""",
|
1494
|
+
expectedProjectContents: """
|
1495
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1496
|
+
<PropertyGroup>
|
1497
|
+
<TargetFramework>netcoreapp3.1</TargetFramework>
|
1498
|
+
</PropertyGroup>
|
1499
|
+
<ItemGroup>
|
1500
|
+
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.18" />
|
1501
|
+
</ItemGroup>
|
1502
|
+
</Project>
|
1503
|
+
""");
|
1504
|
+
}
|
1505
|
+
|
1506
|
+
[Fact]
|
1507
|
+
public async Task UpdatingToNotCompatiblePackageDoesNothingWithSingleOfMultileTfmNotSupported()
|
1508
|
+
{
|
1509
|
+
// the requested package upgrade is supported on net7.0, but not netcoreapp3.1, so we skip the whole thing
|
1510
|
+
await TestUpdateForProject("Microsoft.AspNetCore.Authentication.JwtBearer", "3.1.18", "7.0.5",
|
1511
|
+
projectContents: """
|
1512
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1513
|
+
<PropertyGroup>
|
1514
|
+
<TargetFrameworks>netcoreapp3.1;net7.0</TargetFrameworks>
|
1515
|
+
</PropertyGroup>
|
1516
|
+
<ItemGroup>
|
1517
|
+
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.18" />
|
1518
|
+
</ItemGroup>
|
1519
|
+
</Project>
|
1520
|
+
""",
|
1521
|
+
expectedProjectContents: """
|
1522
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1523
|
+
<PropertyGroup>
|
1524
|
+
<TargetFrameworks>netcoreapp3.1;net7.0</TargetFrameworks>
|
1525
|
+
</PropertyGroup>
|
1526
|
+
<ItemGroup>
|
1527
|
+
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.18" />
|
1528
|
+
</ItemGroup>
|
1529
|
+
</Project>
|
1530
|
+
""");
|
1531
|
+
}
|
1532
|
+
|
1533
|
+
[Fact]
|
1534
|
+
public async Task UpdateOfNonExistantPackageDoesNothingEvenIfTransitiveDependencyIsPresent()
|
1535
|
+
{
|
1536
|
+
// package Microsoft.Extensions.Http isn't present, but one of its transitive dependencies is
|
1537
|
+
await TestUpdateForProject("Microsoft.Extensions.Http", "2.2.0", "7.0.0",
|
1538
|
+
projectContents: """
|
1539
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1540
|
+
<PropertyGroup>
|
1541
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1542
|
+
</PropertyGroup>
|
1543
|
+
<ItemGroup>
|
1544
|
+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
|
1545
|
+
</ItemGroup>
|
1546
|
+
</Project>
|
1547
|
+
""",
|
1548
|
+
expectedProjectContents: """
|
1549
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1550
|
+
<PropertyGroup>
|
1551
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
1552
|
+
</PropertyGroup>
|
1553
|
+
<ItemGroup>
|
1554
|
+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0" />
|
1555
|
+
</ItemGroup>
|
1556
|
+
</Project>
|
1557
|
+
""");
|
1558
|
+
}
|
1559
|
+
|
1560
|
+
[Fact]
|
1561
|
+
public async Task AvoidPackageDowngradeWhenUpdatingDependency()
|
1562
|
+
{
|
1563
|
+
await TestUpdateForProject("Microsoft.VisualStudio.Sdk.TestFramework.Xunit", "17.2.7", "17.6.16",
|
1564
|
+
projectContents: """
|
1565
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1566
|
+
|
1567
|
+
<PropertyGroup>
|
1568
|
+
<TargetFramework>$(PreferredTargetFramework)</TargetFramework>
|
1569
|
+
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
1570
|
+
<RootNamespace />
|
1571
|
+
</PropertyGroup>
|
1572
|
+
|
1573
|
+
<ItemGroup>
|
1574
|
+
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
1575
|
+
<PackageReference Include="Microsoft.VisualStudio.Sdk.TestFramework" />
|
1576
|
+
<PackageReference Include="Microsoft.VisualStudio.Sdk.TestFramework.Xunit" />
|
1577
|
+
<PackageReference Include="Moq" />
|
1578
|
+
<PackageReference Include="xunit.runner.visualstudio" />
|
1579
|
+
<PackageReference Include="xunit" />
|
1580
|
+
</ItemGroup>
|
1581
|
+
|
1582
|
+
</Project>
|
1583
|
+
""",
|
1584
|
+
additionalFiles: new[]
|
1585
|
+
{
|
1586
|
+
("Directory.Packages.props", """
|
1587
|
+
<Project>
|
1588
|
+
<PropertyGroup>
|
1589
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1590
|
+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
1591
|
+
</PropertyGroup>
|
1592
|
+
<ItemGroup>
|
1593
|
+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.6.3" />
|
1594
|
+
<PackageVersion Include="Microsoft.VisualStudio.Sdk.TestFramework" Version="17.2.7" />
|
1595
|
+
<PackageVersion Include="Microsoft.VisualStudio.Sdk.TestFramework.Xunit" Version="17.2.7" />
|
1596
|
+
<PackageVersion Include="Microsoft.VisualStudio.Shell.15.0" Version="17.6.36389" />
|
1597
|
+
<PackageVersion Include="Microsoft.VisualStudio.Text.Data" Version="17.6.268" />
|
1598
|
+
<PackageVersion Include="Moq" Version="4.18.2" />
|
1599
|
+
<PackageVersion Include="xunit" Version="2.5.0" />
|
1600
|
+
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.0" />
|
1601
|
+
</ItemGroup>
|
1602
|
+
</Project>
|
1603
|
+
"""),
|
1604
|
+
("Directory.Build.props", """
|
1605
|
+
<Project>
|
1606
|
+
<PropertyGroup>
|
1607
|
+
<PreferredTargetFramework>net7.0</PreferredTargetFramework>
|
1608
|
+
</PropertyGroup>
|
1609
|
+
</Project>
|
1610
|
+
""")
|
1611
|
+
},
|
1612
|
+
expectedProjectContents: """
|
1613
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1614
|
+
|
1615
|
+
<PropertyGroup>
|
1616
|
+
<TargetFramework>$(PreferredTargetFramework)</TargetFramework>
|
1617
|
+
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
1618
|
+
<RootNamespace />
|
1619
|
+
</PropertyGroup>
|
1620
|
+
|
1621
|
+
<ItemGroup>
|
1622
|
+
<PackageReference Include="Microsoft.NET.Test.Sdk" />
|
1623
|
+
<PackageReference Include="Microsoft.VisualStudio.Sdk.TestFramework" />
|
1624
|
+
<PackageReference Include="Microsoft.VisualStudio.Sdk.TestFramework.Xunit" />
|
1625
|
+
<PackageReference Include="Moq" />
|
1626
|
+
<PackageReference Include="xunit.runner.visualstudio" />
|
1627
|
+
<PackageReference Include="xunit" />
|
1628
|
+
</ItemGroup>
|
1629
|
+
|
1630
|
+
</Project>
|
1631
|
+
""",
|
1632
|
+
additionalFilesExpected: new[]
|
1633
|
+
{
|
1634
|
+
("Directory.Packages.props", """
|
1635
|
+
<Project>
|
1636
|
+
<PropertyGroup>
|
1637
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1638
|
+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
1639
|
+
</PropertyGroup>
|
1640
|
+
<ItemGroup>
|
1641
|
+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.6.3" />
|
1642
|
+
<PackageVersion Include="Microsoft.VisualStudio.Sdk.TestFramework" Version="17.6.16" />
|
1643
|
+
<PackageVersion Include="Microsoft.VisualStudio.Sdk.TestFramework.Xunit" Version="17.6.16" />
|
1644
|
+
<PackageVersion Include="Microsoft.VisualStudio.Shell.15.0" Version="17.6.36389" />
|
1645
|
+
<PackageVersion Include="Microsoft.VisualStudio.Text.Data" Version="17.6.268" />
|
1646
|
+
<PackageVersion Include="Moq" Version="4.18.4" />
|
1647
|
+
<PackageVersion Include="xunit" Version="2.5.0" />
|
1648
|
+
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.0" />
|
1649
|
+
</ItemGroup>
|
1650
|
+
</Project>
|
1651
|
+
"""),
|
1652
|
+
("Directory.Build.props", """
|
1653
|
+
<Project>
|
1654
|
+
<PropertyGroup>
|
1655
|
+
<PreferredTargetFramework>net7.0</PreferredTargetFramework>
|
1656
|
+
</PropertyGroup>
|
1657
|
+
</Project>
|
1658
|
+
""")
|
1659
|
+
});
|
1660
|
+
}
|
1661
|
+
|
1662
|
+
[Fact]
|
1663
|
+
public async Task AddTransitiveDependencyByAddingPackageReferenceAndVersion()
|
1664
|
+
{
|
1665
|
+
await TestUpdateForProject("System.Text.Json", "5.0.0", "5.0.2", isTransitive: true,
|
1666
|
+
// initial
|
1667
|
+
projectContents: """
|
1668
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1669
|
+
|
1670
|
+
<PropertyGroup>
|
1671
|
+
<TargetFramework>net5.0</TargetFramework>
|
1672
|
+
</PropertyGroup>
|
1673
|
+
|
1674
|
+
<ItemGroup>
|
1675
|
+
<PackageReference Include="Mongo2Go" />
|
1676
|
+
</ItemGroup>
|
1677
|
+
|
1678
|
+
</Project>
|
1679
|
+
""",
|
1680
|
+
additionalFiles: new[]
|
1681
|
+
{
|
1682
|
+
// initial props files
|
1683
|
+
("Directory.Packages.props", """
|
1684
|
+
<Project>
|
1685
|
+
<PropertyGroup>
|
1686
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1687
|
+
</PropertyGroup>
|
1688
|
+
<ItemGroup>
|
1689
|
+
<PackageVersion Include="Mongo2Go" Version="3.1.3" />
|
1690
|
+
</ItemGroup>
|
1691
|
+
</Project>
|
1692
|
+
""")
|
1693
|
+
},
|
1694
|
+
// expected
|
1695
|
+
expectedProjectContents: """
|
1696
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1697
|
+
|
1698
|
+
<PropertyGroup>
|
1699
|
+
<TargetFramework>net5.0</TargetFramework>
|
1700
|
+
</PropertyGroup>
|
1701
|
+
|
1702
|
+
<ItemGroup>
|
1703
|
+
<PackageReference Include="Mongo2Go" />
|
1704
|
+
<PackageReference Include="System.Text.Json" />
|
1705
|
+
</ItemGroup>
|
1706
|
+
|
1707
|
+
</Project>
|
1708
|
+
""",
|
1709
|
+
additionalFilesExpected: new[]
|
1710
|
+
{
|
1711
|
+
// expected props files
|
1712
|
+
("Directory.Packages.props", """
|
1713
|
+
<Project>
|
1714
|
+
<PropertyGroup>
|
1715
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1716
|
+
</PropertyGroup>
|
1717
|
+
<ItemGroup>
|
1718
|
+
<PackageVersion Include="Mongo2Go" Version="3.1.3" />
|
1719
|
+
<PackageVersion Include="System.Text.Json" Version="5.0.2" />
|
1720
|
+
</ItemGroup>
|
1721
|
+
</Project>
|
1722
|
+
""")
|
1723
|
+
});
|
1724
|
+
}
|
1725
|
+
|
1726
|
+
[Fact]
|
1727
|
+
public async Task PinTransitiveDependencyByAddingPackageVersion()
|
1728
|
+
{
|
1729
|
+
await TestUpdateForProject("System.Text.Json", "5.0.0", "5.0.2", isTransitive: true,
|
1730
|
+
// initial
|
1731
|
+
projectContents: """
|
1732
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1733
|
+
|
1734
|
+
<PropertyGroup>
|
1735
|
+
<NoWarn>$(NoWarn);NETSDK1138</NoWarn>
|
1736
|
+
<TargetFramework>net5.0</TargetFramework>
|
1737
|
+
</PropertyGroup>
|
1738
|
+
|
1739
|
+
<ItemGroup>
|
1740
|
+
<PackageReference Include="Mongo2Go" />
|
1741
|
+
</ItemGroup>
|
1742
|
+
|
1743
|
+
</Project>
|
1744
|
+
""",
|
1745
|
+
additionalFiles: new[]
|
1746
|
+
{
|
1747
|
+
// initial props files
|
1748
|
+
("Directory.Packages.props", """
|
1749
|
+
<Project>
|
1750
|
+
<PropertyGroup>
|
1751
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1752
|
+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
1753
|
+
</PropertyGroup>
|
1754
|
+
<ItemGroup>
|
1755
|
+
<PackageVersion Include="Mongo2Go" Version="3.1.3" />
|
1756
|
+
</ItemGroup>
|
1757
|
+
</Project>
|
1758
|
+
""")
|
1759
|
+
},
|
1760
|
+
// expected
|
1761
|
+
expectedProjectContents: """
|
1762
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1763
|
+
|
1764
|
+
<PropertyGroup>
|
1765
|
+
<NoWarn>$(NoWarn);NETSDK1138</NoWarn>
|
1766
|
+
<TargetFramework>net5.0</TargetFramework>
|
1767
|
+
</PropertyGroup>
|
1768
|
+
|
1769
|
+
<ItemGroup>
|
1770
|
+
<PackageReference Include="Mongo2Go" />
|
1771
|
+
</ItemGroup>
|
1772
|
+
|
1773
|
+
</Project>
|
1774
|
+
""",
|
1775
|
+
additionalFilesExpected: new[]
|
1776
|
+
{
|
1777
|
+
// expected props files
|
1778
|
+
("Directory.Packages.props", """
|
1779
|
+
<Project>
|
1780
|
+
<PropertyGroup>
|
1781
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1782
|
+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
1783
|
+
</PropertyGroup>
|
1784
|
+
<ItemGroup>
|
1785
|
+
<PackageVersion Include="Mongo2Go" Version="3.1.3" />
|
1786
|
+
<PackageVersion Include="System.Text.Json" Version="5.0.2" />
|
1787
|
+
</ItemGroup>
|
1788
|
+
</Project>
|
1789
|
+
""")
|
1790
|
+
});
|
1791
|
+
}
|
1792
|
+
|
1793
|
+
[Fact]
|
1794
|
+
public async Task PropsFileNameWithDifferentCasing()
|
1795
|
+
{
|
1796
|
+
await TestUpdateForProject("Newtonsoft.Json", "12.0.1", "13.0.1",
|
1797
|
+
projectContents: """
|
1798
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1799
|
+
<PropertyGroup>
|
1800
|
+
<TargetFramework>net7.0</TargetFramework>
|
1801
|
+
</PropertyGroup>
|
1802
|
+
<ItemGroup>
|
1803
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
|
1804
|
+
</ItemGroup>
|
1805
|
+
</Project>
|
1806
|
+
""",
|
1807
|
+
additionalFiles: new[]
|
1808
|
+
{
|
1809
|
+
("Directory.Build.props", """
|
1810
|
+
<Project>
|
1811
|
+
<Import Project="Versions.Props" />
|
1812
|
+
</Project>
|
1813
|
+
"""),
|
1814
|
+
// notice the uppercase 'P' in the file name
|
1815
|
+
("Versions.Props", """
|
1816
|
+
<Project>
|
1817
|
+
<PropertyGroup>
|
1818
|
+
<NewtonsoftJsonVersion>12.0.1</NewtonsoftJsonVersion>
|
1819
|
+
</PropertyGroup>
|
1820
|
+
</Project>
|
1821
|
+
""")
|
1822
|
+
},
|
1823
|
+
// no change
|
1824
|
+
expectedProjectContents: """
|
1825
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1826
|
+
<PropertyGroup>
|
1827
|
+
<TargetFramework>net7.0</TargetFramework>
|
1828
|
+
</PropertyGroup>
|
1829
|
+
<ItemGroup>
|
1830
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
|
1831
|
+
</ItemGroup>
|
1832
|
+
</Project>
|
1833
|
+
""",
|
1834
|
+
additionalFilesExpected: new[]
|
1835
|
+
{
|
1836
|
+
// no change
|
1837
|
+
("Directory.Build.props", """
|
1838
|
+
<Project>
|
1839
|
+
<Import Project="Versions.Props" />
|
1840
|
+
</Project>
|
1841
|
+
"""),
|
1842
|
+
// version number was updated here
|
1843
|
+
("Versions.Props", """
|
1844
|
+
<Project>
|
1845
|
+
<PropertyGroup>
|
1846
|
+
<NewtonsoftJsonVersion>13.0.1</NewtonsoftJsonVersion>
|
1847
|
+
</PropertyGroup>
|
1848
|
+
</Project>
|
1849
|
+
""")
|
1850
|
+
}
|
1851
|
+
);
|
1852
|
+
}
|
1853
|
+
|
1854
|
+
[Fact]
|
1855
|
+
public async Task VersionAttributeWithDifferentCasing_VersionNumberInline()
|
1856
|
+
{
|
1857
|
+
// the version attribute in the project has an all lowercase name
|
1858
|
+
await TestUpdateForProject("Newtonsoft.Json", "12.0.1", "13.0.1",
|
1859
|
+
projectContents: """
|
1860
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1861
|
+
<PropertyGroup>
|
1862
|
+
<TargetFramework>net7.0</TargetFramework>
|
1863
|
+
</PropertyGroup>
|
1864
|
+
<ItemGroup>
|
1865
|
+
<PackageReference Include="Newtonsoft.Json" version="12.0.1" />
|
1866
|
+
</ItemGroup>
|
1867
|
+
</Project>
|
1868
|
+
""",
|
1869
|
+
expectedProjectContents: """
|
1870
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1871
|
+
<PropertyGroup>
|
1872
|
+
<TargetFramework>net7.0</TargetFramework>
|
1873
|
+
</PropertyGroup>
|
1874
|
+
<ItemGroup>
|
1875
|
+
<PackageReference Include="Newtonsoft.Json" version="13.0.1" />
|
1876
|
+
</ItemGroup>
|
1877
|
+
</Project>
|
1878
|
+
"""
|
1879
|
+
);
|
1880
|
+
}
|
1881
|
+
|
1882
|
+
[Fact]
|
1883
|
+
public async Task VersionAttributeWithDifferentCasing_VersionNumberInProperty()
|
1884
|
+
{
|
1885
|
+
// the version attribute in the project has an all lowercase name
|
1886
|
+
await TestUpdateForProject("Newtonsoft.Json", "12.0.1", "13.0.1",
|
1887
|
+
projectContents: """
|
1888
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1889
|
+
<PropertyGroup>
|
1890
|
+
<TargetFramework>net7.0</TargetFramework>
|
1891
|
+
</PropertyGroup>
|
1892
|
+
<ItemGroup>
|
1893
|
+
<PackageReference Include="Newtonsoft.Json" version="$(NewtonsoftJsonVersion)" />
|
1894
|
+
</ItemGroup>
|
1895
|
+
</Project>
|
1896
|
+
""",
|
1897
|
+
additionalFiles: new[]
|
1898
|
+
{
|
1899
|
+
("Directory.Build.props", """
|
1900
|
+
<Project>
|
1901
|
+
<Import Project="Versions.props" />
|
1902
|
+
</Project>
|
1903
|
+
"""),
|
1904
|
+
("Versions.props", """
|
1905
|
+
<Project>
|
1906
|
+
<PropertyGroup>
|
1907
|
+
<NewtonsoftJsonVersion>12.0.1</NewtonsoftJsonVersion>
|
1908
|
+
</PropertyGroup>
|
1909
|
+
</Project>
|
1910
|
+
""")
|
1911
|
+
},
|
1912
|
+
// no change
|
1913
|
+
expectedProjectContents: """
|
1914
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1915
|
+
<PropertyGroup>
|
1916
|
+
<TargetFramework>net7.0</TargetFramework>
|
1917
|
+
</PropertyGroup>
|
1918
|
+
<ItemGroup>
|
1919
|
+
<PackageReference Include="Newtonsoft.Json" version="$(NewtonsoftJsonVersion)" />
|
1920
|
+
</ItemGroup>
|
1921
|
+
</Project>
|
1922
|
+
""",
|
1923
|
+
additionalFilesExpected: new[]
|
1924
|
+
{
|
1925
|
+
// no change
|
1926
|
+
("Directory.Build.props", """
|
1927
|
+
<Project>
|
1928
|
+
<Import Project="Versions.props" />
|
1929
|
+
</Project>
|
1930
|
+
"""),
|
1931
|
+
// version number was updated here
|
1932
|
+
("Versions.props", """
|
1933
|
+
<Project>
|
1934
|
+
<PropertyGroup>
|
1935
|
+
<NewtonsoftJsonVersion>13.0.1</NewtonsoftJsonVersion>
|
1936
|
+
</PropertyGroup>
|
1937
|
+
</Project>
|
1938
|
+
""")
|
1939
|
+
}
|
1940
|
+
);
|
1941
|
+
}
|
1942
|
+
|
1943
|
+
[Fact]
|
1944
|
+
public async Task DirectoryPackagesPropsDoesCentralPackagePinningGetsUpdatedIfTransitiveFlagIsSet()
|
1945
|
+
{
|
1946
|
+
await TestUpdateForProject("xunit.assert", "2.5.2", "2.5.3",
|
1947
|
+
isTransitive: true,
|
1948
|
+
projectContents: """
|
1949
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1950
|
+
<PropertyGroup>
|
1951
|
+
<TargetFramework>net7.0</TargetFramework>
|
1952
|
+
</PropertyGroup>
|
1953
|
+
<ItemGroup>
|
1954
|
+
<PackageReference Include="xunit" />
|
1955
|
+
</ItemGroup>
|
1956
|
+
</Project>
|
1957
|
+
""",
|
1958
|
+
additionalFiles: new[]
|
1959
|
+
{
|
1960
|
+
("Directory.Packages.props", """
|
1961
|
+
<Project>
|
1962
|
+
<PropertyGroup>
|
1963
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1964
|
+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
1965
|
+
</PropertyGroup>
|
1966
|
+
<ItemGroup>
|
1967
|
+
<PackageVersion Include="xunit" Version="2.5.2" />
|
1968
|
+
<PackageVersion Include="xunit.assert" Version="2.5.2" />
|
1969
|
+
</ItemGroup>
|
1970
|
+
</Project>
|
1971
|
+
""")
|
1972
|
+
},
|
1973
|
+
expectedProjectContents: """
|
1974
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1975
|
+
<PropertyGroup>
|
1976
|
+
<TargetFramework>net7.0</TargetFramework>
|
1977
|
+
</PropertyGroup>
|
1978
|
+
<ItemGroup>
|
1979
|
+
<PackageReference Include="xunit" />
|
1980
|
+
</ItemGroup>
|
1981
|
+
</Project>
|
1982
|
+
""",
|
1983
|
+
additionalFilesExpected: new[]
|
1984
|
+
{
|
1985
|
+
("Directory.Packages.props", """
|
1986
|
+
<Project>
|
1987
|
+
<PropertyGroup>
|
1988
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1989
|
+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
1990
|
+
</PropertyGroup>
|
1991
|
+
<ItemGroup>
|
1992
|
+
<PackageVersion Include="xunit" Version="2.5.2" />
|
1993
|
+
<PackageVersion Include="xunit.assert" Version="2.5.3" />
|
1994
|
+
</ItemGroup>
|
1995
|
+
</Project>
|
1996
|
+
""")
|
1997
|
+
}
|
1998
|
+
);
|
1999
|
+
}
|
2000
|
+
|
2001
|
+
[Fact]
|
2002
|
+
public async Task DirectoryPackagesPropsDoesNotGetDuplicateEntryIfCentralTransitivePinningIsUsed()
|
2003
|
+
{
|
2004
|
+
await TestUpdateForProject("xunit.assert", "2.5.2", "2.5.3",
|
2005
|
+
isTransitive: true,
|
2006
|
+
projectContents: """
|
2007
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2008
|
+
<PropertyGroup>
|
2009
|
+
<TargetFramework>net7.0</TargetFramework>
|
2010
|
+
</PropertyGroup>
|
2011
|
+
<ItemGroup>
|
2012
|
+
<PackageReference Include="xunit" />
|
2013
|
+
</ItemGroup>
|
2014
|
+
</Project>
|
2015
|
+
""",
|
2016
|
+
additionalFiles: new[]
|
2017
|
+
{
|
2018
|
+
("Directory.Packages.props", """
|
2019
|
+
<Project>
|
2020
|
+
<PropertyGroup>
|
2021
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2022
|
+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2023
|
+
</PropertyGroup>
|
2024
|
+
<ItemGroup>
|
2025
|
+
<PackageVersion Include="xunit" Version="2.5.2" />
|
2026
|
+
<PackageVersion Include="xunit.assert" Version="2.5.3" />
|
2027
|
+
</ItemGroup>
|
2028
|
+
</Project>
|
2029
|
+
""")
|
2030
|
+
},
|
2031
|
+
expectedProjectContents: """
|
2032
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2033
|
+
<PropertyGroup>
|
2034
|
+
<TargetFramework>net7.0</TargetFramework>
|
2035
|
+
</PropertyGroup>
|
2036
|
+
<ItemGroup>
|
2037
|
+
<PackageReference Include="xunit" />
|
2038
|
+
</ItemGroup>
|
2039
|
+
</Project>
|
2040
|
+
""",
|
2041
|
+
additionalFilesExpected: new[]
|
2042
|
+
{
|
2043
|
+
("Directory.Packages.props", """
|
2044
|
+
<Project>
|
2045
|
+
<PropertyGroup>
|
2046
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2047
|
+
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2048
|
+
</PropertyGroup>
|
2049
|
+
<ItemGroup>
|
2050
|
+
<PackageVersion Include="xunit" Version="2.5.2" />
|
2051
|
+
<PackageVersion Include="xunit.assert" Version="2.5.3" />
|
2052
|
+
</ItemGroup>
|
2053
|
+
</Project>
|
2054
|
+
""")
|
2055
|
+
}
|
2056
|
+
);
|
2057
|
+
}
|
2058
|
+
|
2059
|
+
[Fact]
|
2060
|
+
public async Task PackageWithFourPartVersionCanBeUpdated()
|
2061
|
+
{
|
2062
|
+
await TestUpdateForProject("AWSSDK.Core", "3.7.204.13", "3.7.204.14",
|
2063
|
+
projectContents: """
|
2064
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2065
|
+
<PropertyGroup>
|
2066
|
+
<TargetFramework>net7.0</TargetFramework>
|
2067
|
+
</PropertyGroup>
|
2068
|
+
<ItemGroup>
|
2069
|
+
<PackageReference Include="AWSSDK.Core" Version="3.7.204.13" />
|
2070
|
+
</ItemGroup>
|
2071
|
+
</Project>
|
2072
|
+
""",
|
2073
|
+
expectedProjectContents: """
|
2074
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2075
|
+
<PropertyGroup>
|
2076
|
+
<TargetFramework>net7.0</TargetFramework>
|
2077
|
+
</PropertyGroup>
|
2078
|
+
<ItemGroup>
|
2079
|
+
<PackageReference Include="AWSSDK.Core" Version="3.7.204.14" />
|
2080
|
+
</ItemGroup>
|
2081
|
+
</Project>
|
2082
|
+
"""
|
2083
|
+
);
|
2084
|
+
}
|
2085
|
+
|
2086
|
+
[Fact]
|
2087
|
+
public async Task PackageWithOnlyBuildTargetsCanBeUpdated()
|
2088
|
+
{
|
2089
|
+
await TestUpdateForProject("Microsoft.Windows.Compatibility", "7.0.0", "8.0.0",
|
2090
|
+
projectContents: """
|
2091
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2092
|
+
<PropertyGroup>
|
2093
|
+
<TargetFramework>net5.0</TargetFramework>
|
2094
|
+
</PropertyGroup>
|
2095
|
+
<ItemGroup>
|
2096
|
+
<PackageReference Include="Microsoft.Windows.Compatibility" Version="7.0.0" />
|
2097
|
+
</ItemGroup>
|
2098
|
+
</Project>
|
2099
|
+
""",
|
2100
|
+
expectedProjectContents: """
|
2101
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2102
|
+
<PropertyGroup>
|
2103
|
+
<TargetFramework>net5.0</TargetFramework>
|
2104
|
+
</PropertyGroup>
|
2105
|
+
<ItemGroup>
|
2106
|
+
<PackageReference Include="Microsoft.Windows.Compatibility" Version="8.0.0" />
|
2107
|
+
</ItemGroup>
|
2108
|
+
</Project>
|
2109
|
+
"""
|
2110
|
+
);
|
2111
|
+
}
|
2112
|
+
|
2113
|
+
[Fact]
|
2114
|
+
public async Task UpdatePackageVersionFromPropertiesWithAndWithoutConditions()
|
2115
|
+
{
|
2116
|
+
await TestUpdateForProject("Newtonsoft.Json", "12.0.1", "13.0.1",
|
2117
|
+
projectContents: """
|
2118
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2119
|
+
<PropertyGroup>
|
2120
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
2121
|
+
<NewtonsoftJsonVersion Condition="$(UseLegacyVersion7) == 'true'">7.0.1</NewtonsoftJsonVersion>
|
2122
|
+
<NewtonsoftJsonVersion>12.0.1</NewtonsoftJsonVersion>
|
2123
|
+
<NewtonsoftJsonVersion Condition="$(UseLegacyVersion9) == 'true'">9.0.1</NewtonsoftJsonVersion>
|
2124
|
+
</PropertyGroup>
|
2125
|
+
<ItemGroup>
|
2126
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
|
2127
|
+
</ItemGroup>
|
2128
|
+
</Project>
|
2129
|
+
""",
|
2130
|
+
expectedProjectContents: """
|
2131
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2132
|
+
<PropertyGroup>
|
2133
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
2134
|
+
<NewtonsoftJsonVersion Condition="$(UseLegacyVersion7) == 'true'">7.0.1</NewtonsoftJsonVersion>
|
2135
|
+
<NewtonsoftJsonVersion>13.0.1</NewtonsoftJsonVersion>
|
2136
|
+
<NewtonsoftJsonVersion Condition="$(UseLegacyVersion9) == 'true'">9.0.1</NewtonsoftJsonVersion>
|
2137
|
+
</PropertyGroup>
|
2138
|
+
<ItemGroup>
|
2139
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
|
2140
|
+
</ItemGroup>
|
2141
|
+
</Project>
|
2142
|
+
"""
|
2143
|
+
);
|
2144
|
+
}
|
2145
|
+
|
2146
|
+
[Fact]
|
2147
|
+
public async Task UpdatePackageVersionFromPropertyWithConditionCheckingForEmptyString()
|
2148
|
+
{
|
2149
|
+
await TestUpdateForProject("Newtonsoft.Json", "12.0.1", "13.0.1",
|
2150
|
+
projectContents: """
|
2151
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2152
|
+
<PropertyGroup>
|
2153
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
2154
|
+
<NewtonsoftJsonVersion Condition="$(NewtonsoftJsonVersion) == ''">12.0.1</NewtonsoftJsonVersion>
|
2155
|
+
<NewtonsoftJsonVersion Condition="$(UseLegacyVersion9) == 'true'">9.0.1</NewtonsoftJsonVersion>
|
2156
|
+
</PropertyGroup>
|
2157
|
+
<ItemGroup>
|
2158
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
|
2159
|
+
</ItemGroup>
|
2160
|
+
</Project>
|
2161
|
+
""",
|
2162
|
+
expectedProjectContents: """
|
2163
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2164
|
+
<PropertyGroup>
|
2165
|
+
<TargetFramework>netstandard2.0</TargetFramework>
|
2166
|
+
<NewtonsoftJsonVersion Condition="$(NewtonsoftJsonVersion) == ''">13.0.1</NewtonsoftJsonVersion>
|
2167
|
+
<NewtonsoftJsonVersion Condition="$(UseLegacyVersion9) == 'true'">9.0.1</NewtonsoftJsonVersion>
|
2168
|
+
</PropertyGroup>
|
2169
|
+
<ItemGroup>
|
2170
|
+
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />
|
2171
|
+
</ItemGroup>
|
2172
|
+
</Project>
|
2173
|
+
"""
|
2174
|
+
);
|
2175
|
+
}
|
2176
|
+
}
|
2177
|
+
}
|