dependabot-nuget 0.321.2 → 0.322.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/helpers/lib/NuGetUpdater/Directory.Packages.props +22 -22
- data/helpers/lib/NuGetUpdater/DotNetPackageCorrelation/Model/PackageMapper.cs +9 -0
- data/helpers/lib/NuGetUpdater/DotNetPackageCorrelation.Cli/Program.cs +21 -7
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/AnalyzeCommand.cs +19 -11
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/CloneCommand.cs +19 -9
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs +21 -14
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/FrameworkCheckCommand.cs +8 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/RunCommand.cs +29 -16
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/UpdateCommand.cs +20 -19
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Program.cs +2 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencyDiscoveryTargetingPacks.props +2 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencySolver/IDependencySolver.cs +8 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencySolver/MSBuildDependencySolver.cs +32 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/ProjectDiscoveryResult.cs +1 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +10 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/WorkspaceDiscoveryResult.cs +6 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +3 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/GlobalJsonBuildFile.cs +5 -13
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/PrivateSourceTimedOutException.cs +12 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/JobErrorBase.cs +4 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/PrivateSourceTimedOut.cs +10 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestTextGenerator.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/CreateSecurityUpdatePullRequestHandler.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/GroupUpdateAllVersionsHandler.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshGroupUpdatePullRequestHandler.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshSecurityUpdatePullRequestHandler.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshVersionUpdatePullRequestHandler.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/DotNetToolsJsonUpdater.cs +6 -3
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/FileWriterWorker.cs +376 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/IFileWriter.cs +14 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/XmlFileWriter.cs +477 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/GlobalJsonUpdater.cs +9 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdateOperationBase.cs +18 -7
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +26 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +15 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/DependencySolver/MSBuildDependencySolverTests.cs +633 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.GlobalJson.cs +0 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +0 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/SdkProjectDiscoveryTests.cs +49 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/GlobalJsonBuildFileTests.cs +0 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/EndToEndTests.cs +484 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/HttpApiHandlerTests.cs +1 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/JobErrorBaseTests.cs +7 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MessageReportTests.cs +11 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestTextTests.cs +21 -22
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/RunWorkerTests.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/SerializationTests.cs +8 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/DotNetToolsJsonUpdaterTests.cs +181 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/FileWriterTestsBase.cs +61 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/FileWriterWorkerTests.cs +917 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/FileWriterWorkerTests_MiscellaneousTests.cs +154 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/TestFileWriterReturnsConstantResult.cs +20 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/XmlFileWriterTests.cs +1620 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/XmlFileWriterTests_CreateUpdatedVersionRangeTests.cs +25 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/GlobalJsonUpdaterTests.cs +139 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackagesConfigUpdaterTests.cs +1961 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateOperationResultTests.cs +116 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +16 -1043
- data/helpers/lib/NuGetUpdater/global.json +1 -1
- metadata +21 -10
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DotNetTools.cs +0 -375
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.GlobalJson.cs +0 -296
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.LockFile.cs +0 -251
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Mixed.cs +0 -201
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackageReference.cs +0 -3821
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +0 -2706
data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackageReference.cs
DELETED
@@ -1,3821 +0,0 @@
|
|
1
|
-
using System.Linq;
|
2
|
-
using System.Text;
|
3
|
-
using System.Text.Json;
|
4
|
-
|
5
|
-
using NuGet.Versioning;
|
6
|
-
|
7
|
-
using NuGetUpdater.Core.Run.ApiModel;
|
8
|
-
using NuGetUpdater.Core.Updater;
|
9
|
-
|
10
|
-
using Xunit;
|
11
|
-
|
12
|
-
namespace NuGetUpdater.Core.Test.Update;
|
13
|
-
|
14
|
-
public partial class UpdateWorkerTests
|
15
|
-
{
|
16
|
-
public class PackageReference : UpdateWorkerTestBase
|
17
|
-
{
|
18
|
-
[Theory]
|
19
|
-
[InlineData("net472")]
|
20
|
-
[InlineData("net7.0")]
|
21
|
-
[InlineData("net8.0")]
|
22
|
-
[InlineData("net9.0")]
|
23
|
-
public async Task UpdateVersionAttribute_InProjectFile_ForPackageReferenceInclude(string tfm)
|
24
|
-
{
|
25
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
26
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
27
|
-
packages:
|
28
|
-
[
|
29
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", tfm),
|
30
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", tfm),
|
31
|
-
],
|
32
|
-
// initial
|
33
|
-
projectContents: $"""
|
34
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
35
|
-
<PropertyGroup>
|
36
|
-
<TargetFramework>{tfm}</TargetFramework>
|
37
|
-
</PropertyGroup>
|
38
|
-
|
39
|
-
<ItemGroup>
|
40
|
-
<PackageReference Include="Some.Package" Version="9.0.1" />
|
41
|
-
</ItemGroup>
|
42
|
-
</Project>
|
43
|
-
""",
|
44
|
-
// expected
|
45
|
-
expectedProjectContents: $"""
|
46
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
47
|
-
<PropertyGroup>
|
48
|
-
<TargetFramework>{tfm}</TargetFramework>
|
49
|
-
</PropertyGroup>
|
50
|
-
|
51
|
-
<ItemGroup>
|
52
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
53
|
-
</ItemGroup>
|
54
|
-
</Project>
|
55
|
-
""",
|
56
|
-
expectedResult: new()
|
57
|
-
{
|
58
|
-
UpdateOperations = [
|
59
|
-
new DirectUpdate()
|
60
|
-
{
|
61
|
-
DependencyName = "Some.Package",
|
62
|
-
NewVersion = NuGetVersion.Parse("13.0.1"),
|
63
|
-
UpdatedFiles = [
|
64
|
-
"/src/test-project.csproj"
|
65
|
-
]
|
66
|
-
}
|
67
|
-
]
|
68
|
-
}
|
69
|
-
);
|
70
|
-
}
|
71
|
-
|
72
|
-
[Theory]
|
73
|
-
[InlineData(true)]
|
74
|
-
[InlineData(false)]
|
75
|
-
public async Task UpdateVersionChildElement_InProjectFile_ForPackageReferenceIncludeTheory(bool useLegacyDependencySolver)
|
76
|
-
{
|
77
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
78
|
-
var experimentsManager = new ExperimentsManager() { UseLegacyDependencySolver = useLegacyDependencySolver };
|
79
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
80
|
-
experimentsManager: experimentsManager,
|
81
|
-
packages:
|
82
|
-
[
|
83
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
84
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
85
|
-
],
|
86
|
-
// initial
|
87
|
-
projectContents: $"""
|
88
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
89
|
-
<PropertyGroup>
|
90
|
-
<TargetFramework>net8.0</TargetFramework>
|
91
|
-
</PropertyGroup>
|
92
|
-
<ItemGroup>
|
93
|
-
<PackageReference Include="Some.Package">
|
94
|
-
<Version>9.0.1</Version>
|
95
|
-
</PackageReference>
|
96
|
-
</ItemGroup>
|
97
|
-
</Project>
|
98
|
-
""",
|
99
|
-
// expected
|
100
|
-
expectedProjectContents: $"""
|
101
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
102
|
-
<PropertyGroup>
|
103
|
-
<TargetFramework>net8.0</TargetFramework>
|
104
|
-
</PropertyGroup>
|
105
|
-
<ItemGroup>
|
106
|
-
<PackageReference Include="Some.Package">
|
107
|
-
<Version>13.0.1</Version>
|
108
|
-
</PackageReference>
|
109
|
-
</ItemGroup>
|
110
|
-
</Project>
|
111
|
-
"""
|
112
|
-
);
|
113
|
-
}
|
114
|
-
|
115
|
-
[Theory]
|
116
|
-
[InlineData(true)]
|
117
|
-
[InlineData(false)]
|
118
|
-
public async Task PeerDependenciesAreUpdatedEvenWhenNotExplicit(bool useLegacyDependencySolver)
|
119
|
-
{
|
120
|
-
var experimentsManager = new ExperimentsManager() { UseLegacyDependencySolver = useLegacyDependencySolver };
|
121
|
-
await TestUpdateForProject("Some.Package", "1.0.0", "2.0.0",
|
122
|
-
experimentsManager: experimentsManager,
|
123
|
-
packages:
|
124
|
-
[
|
125
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0", [(null, [("Transitive.Package", "[1.0.0]")])]),
|
126
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.0.0", "net8.0", [(null, [("Transitive.Package", "[2.0.0]")])]),
|
127
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Package", "1.0.0", "net8.0"),
|
128
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Package", "2.0.0", "net8.0"),
|
129
|
-
],
|
130
|
-
projectFile: ("a/a.csproj", """
|
131
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
132
|
-
<PropertyGroup>
|
133
|
-
<TargetFramework>net8.0</TargetFramework>
|
134
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
135
|
-
</PropertyGroup>
|
136
|
-
<ItemGroup>
|
137
|
-
<PackageReference Include="Some.Package" />
|
138
|
-
</ItemGroup>
|
139
|
-
</Project>
|
140
|
-
"""),
|
141
|
-
additionalFiles:
|
142
|
-
[
|
143
|
-
("Directory.Packages.props", """
|
144
|
-
<Project>
|
145
|
-
<ItemGroup>
|
146
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
147
|
-
<PackageVersion Include="Transitive.Package" Version="1.0.0" />
|
148
|
-
</ItemGroup>
|
149
|
-
</Project>
|
150
|
-
""")
|
151
|
-
],
|
152
|
-
expectedProjectContents: """
|
153
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
154
|
-
<PropertyGroup>
|
155
|
-
<TargetFramework>net8.0</TargetFramework>
|
156
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
157
|
-
</PropertyGroup>
|
158
|
-
<ItemGroup>
|
159
|
-
<PackageReference Include="Some.Package" />
|
160
|
-
</ItemGroup>
|
161
|
-
</Project>
|
162
|
-
""",
|
163
|
-
additionalFilesExpected:
|
164
|
-
[
|
165
|
-
("Directory.Packages.props", """
|
166
|
-
<Project>
|
167
|
-
<ItemGroup>
|
168
|
-
<PackageVersion Include="Some.Package" Version="2.0.0" />
|
169
|
-
<PackageVersion Include="Transitive.Package" Version="2.0.0" />
|
170
|
-
</ItemGroup>
|
171
|
-
</Project>
|
172
|
-
""")
|
173
|
-
]
|
174
|
-
);
|
175
|
-
}
|
176
|
-
|
177
|
-
[Theory]
|
178
|
-
[InlineData(true)]
|
179
|
-
[InlineData(false)]
|
180
|
-
public async Task PackageIsUpdatedFromCommonTargetsFile(bool useDirectDiscovery)
|
181
|
-
{
|
182
|
-
await TestUpdateForProject("Some.Package", "1.0.0", "2.0.0",
|
183
|
-
packages:
|
184
|
-
[
|
185
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0"),
|
186
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.0.0", "net8.0"),
|
187
|
-
],
|
188
|
-
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = useDirectDiscovery },
|
189
|
-
projectContents: """
|
190
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
191
|
-
<PropertyGroup>
|
192
|
-
<TargetFramework>net8.0</TargetFramework>
|
193
|
-
</PropertyGroup>
|
194
|
-
<Import Project="CommonPackages.targets" />
|
195
|
-
</Project>
|
196
|
-
""",
|
197
|
-
additionalFiles:
|
198
|
-
[
|
199
|
-
("CommonPackages.targets", """
|
200
|
-
<Project>
|
201
|
-
<ItemGroup>
|
202
|
-
<PackageReference Include="Some.Package">
|
203
|
-
<Version>1.0.0</Version>
|
204
|
-
</PackageReference>
|
205
|
-
</ItemGroup>
|
206
|
-
</Project>
|
207
|
-
""")
|
208
|
-
],
|
209
|
-
expectedProjectContents: """
|
210
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
211
|
-
<PropertyGroup>
|
212
|
-
<TargetFramework>net8.0</TargetFramework>
|
213
|
-
</PropertyGroup>
|
214
|
-
<Import Project="CommonPackages.targets" />
|
215
|
-
</Project>
|
216
|
-
""",
|
217
|
-
additionalFilesExpected:
|
218
|
-
[
|
219
|
-
("CommonPackages.targets", """
|
220
|
-
<Project>
|
221
|
-
<ItemGroup>
|
222
|
-
<PackageReference Include="Some.Package">
|
223
|
-
<Version>2.0.0</Version>
|
224
|
-
</PackageReference>
|
225
|
-
</ItemGroup>
|
226
|
-
</Project>
|
227
|
-
""")
|
228
|
-
]
|
229
|
-
);
|
230
|
-
}
|
231
|
-
|
232
|
-
[Fact]
|
233
|
-
public async Task CallingResolveDependencyConflictsNew()
|
234
|
-
{
|
235
|
-
// update Microsoft.CodeAnalysis.Common from 4.9.2 to 4.10.0
|
236
|
-
await TestUpdateForProject("Microsoft.CodeAnalysis.Common", "4.9.2", "4.10.0",
|
237
|
-
// initial
|
238
|
-
projectContents: $"""
|
239
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
240
|
-
<PropertyGroup>
|
241
|
-
<TargetFramework>net8.0</TargetFramework>
|
242
|
-
</PropertyGroup>
|
243
|
-
<ItemGroup>
|
244
|
-
<PackageReference Include="Microsoft.CodeAnalysis.Compilers" Version="4.9.2" />
|
245
|
-
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="4.9.2" />
|
246
|
-
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.9.2" />
|
247
|
-
<PackageReference Include="Microsoft.CodeAnalysis.VisualBasic" Version="4.9.2" />
|
248
|
-
</ItemGroup>
|
249
|
-
</Project>
|
250
|
-
""",
|
251
|
-
// expected
|
252
|
-
expectedProjectContents: $"""
|
253
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
254
|
-
<PropertyGroup>
|
255
|
-
<TargetFramework>net8.0</TargetFramework>
|
256
|
-
</PropertyGroup>
|
257
|
-
<ItemGroup>
|
258
|
-
<PackageReference Include="Microsoft.CodeAnalysis.Compilers" Version="4.10.0" />
|
259
|
-
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="4.10.0" />
|
260
|
-
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.10.0" />
|
261
|
-
<PackageReference Include="Microsoft.CodeAnalysis.VisualBasic" Version="4.10.0" />
|
262
|
-
</ItemGroup>
|
263
|
-
</Project>
|
264
|
-
"""
|
265
|
-
);
|
266
|
-
}
|
267
|
-
|
268
|
-
[Fact]
|
269
|
-
public async Task UpdateVersions_InProjectFile_ForDuplicatePackageReferenceInclude()
|
270
|
-
{
|
271
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
272
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
273
|
-
packages:
|
274
|
-
[
|
275
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
276
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
277
|
-
],
|
278
|
-
// initial
|
279
|
-
projectContents: $"""
|
280
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
281
|
-
<PropertyGroup>
|
282
|
-
<TargetFramework>net8.0</TargetFramework>
|
283
|
-
</PropertyGroup>
|
284
|
-
<ItemGroup>
|
285
|
-
<PackageReference Include="Some.Package" Version="9.0.1" />
|
286
|
-
<PackageReference Include="Some.Package">
|
287
|
-
<Version>9.0.1</Version>
|
288
|
-
</PackageReference>
|
289
|
-
</ItemGroup>
|
290
|
-
</Project>
|
291
|
-
""",
|
292
|
-
// expected
|
293
|
-
expectedProjectContents: $"""
|
294
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
295
|
-
<PropertyGroup>
|
296
|
-
<TargetFramework>net8.0</TargetFramework>
|
297
|
-
</PropertyGroup>
|
298
|
-
<ItemGroup>
|
299
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
300
|
-
<PackageReference Include="Some.Package">
|
301
|
-
<Version>13.0.1</Version>
|
302
|
-
</PackageReference>
|
303
|
-
</ItemGroup>
|
304
|
-
</Project>
|
305
|
-
"""
|
306
|
-
);
|
307
|
-
}
|
308
|
-
|
309
|
-
[Fact]
|
310
|
-
public async Task PartialUpdate_InMultipleProjectFiles_ForVersionConstraint()
|
311
|
-
{
|
312
|
-
// update Some.Package from 12.0.1 to 13.0.1
|
313
|
-
await TestUpdateForProject("Some.Package", "12.0.1", "13.0.1",
|
314
|
-
packages:
|
315
|
-
[
|
316
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0"),
|
317
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
318
|
-
],
|
319
|
-
// initial
|
320
|
-
projectContents: $"""
|
321
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
322
|
-
<PropertyGroup>
|
323
|
-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
324
|
-
<TargetFramework>net8.0</TargetFramework>
|
325
|
-
</PropertyGroup>
|
326
|
-
<ItemGroup>
|
327
|
-
<PackageReference Include="Some.Package" Version="12.0.1" />
|
328
|
-
<ProjectReference Include="../Project/Project.csproj" />
|
329
|
-
</ItemGroup>
|
330
|
-
</Project>
|
331
|
-
""",
|
332
|
-
additionalFiles:
|
333
|
-
[
|
334
|
-
(Path: "src/Project/Project.csproj", Content: """
|
335
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
336
|
-
<PropertyGroup>
|
337
|
-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
338
|
-
<TargetFramework>net8.0</TargetFramework>
|
339
|
-
</PropertyGroup>
|
340
|
-
<ItemGroup>
|
341
|
-
<PackageReference Include="Some.Package" Version="[12.0.1, 13.0.0)" />
|
342
|
-
</ItemGroup>
|
343
|
-
</Project>
|
344
|
-
"""),
|
345
|
-
],
|
346
|
-
// expected
|
347
|
-
expectedProjectContents: $"""
|
348
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
349
|
-
<PropertyGroup>
|
350
|
-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
351
|
-
<TargetFramework>net8.0</TargetFramework>
|
352
|
-
</PropertyGroup>
|
353
|
-
<ItemGroup>
|
354
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
355
|
-
<ProjectReference Include="../Project/Project.csproj" />
|
356
|
-
</ItemGroup>
|
357
|
-
</Project>
|
358
|
-
""",
|
359
|
-
additionalFilesExpected:
|
360
|
-
[
|
361
|
-
(Path: "src/Project/Project.csproj", Content: """
|
362
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
363
|
-
<PropertyGroup>
|
364
|
-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
365
|
-
<TargetFramework>net8.0</TargetFramework>
|
366
|
-
</PropertyGroup>
|
367
|
-
<ItemGroup>
|
368
|
-
<PackageReference Include="Some.Package" Version="[12.0.1, 13.0.0)" />
|
369
|
-
</ItemGroup>
|
370
|
-
</Project>
|
371
|
-
"""),
|
372
|
-
]);
|
373
|
-
}
|
374
|
-
|
375
|
-
[Fact]
|
376
|
-
public async Task UpdateVersionAttribute_InProjectFile_ForPackageReferenceInclude_Windows()
|
377
|
-
{
|
378
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
379
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
380
|
-
packages:
|
381
|
-
[
|
382
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
383
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
384
|
-
// necessary for the `net8.0-windows10.0.19041.0` TFM
|
385
|
-
MockNuGetPackage.WellKnownWindowsSdkRefPackage("10.0.19041.0"),
|
386
|
-
],
|
387
|
-
// initial
|
388
|
-
projectContents: $"""
|
389
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
390
|
-
<PropertyGroup>
|
391
|
-
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
|
392
|
-
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
393
|
-
</PropertyGroup>
|
394
|
-
|
395
|
-
<ItemGroup>
|
396
|
-
<PackageReference Include="Some.Package" Version="9.0.1" />
|
397
|
-
</ItemGroup>
|
398
|
-
</Project>
|
399
|
-
""",
|
400
|
-
// expected
|
401
|
-
expectedProjectContents: $"""
|
402
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
403
|
-
<PropertyGroup>
|
404
|
-
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
|
405
|
-
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
406
|
-
</PropertyGroup>
|
407
|
-
|
408
|
-
<ItemGroup>
|
409
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
410
|
-
</ItemGroup>
|
411
|
-
</Project>
|
412
|
-
"""
|
413
|
-
);
|
414
|
-
}
|
415
|
-
|
416
|
-
[Fact]
|
417
|
-
public async Task UpdateVersionAttribute_InMultipleProjectFiles_ForPackageReferenceInclude()
|
418
|
-
{
|
419
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
420
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
421
|
-
packages:
|
422
|
-
[
|
423
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
424
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
425
|
-
],
|
426
|
-
// initial
|
427
|
-
projectContents: $"""
|
428
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
429
|
-
<PropertyGroup>
|
430
|
-
<TargetFramework>net8.0</TargetFramework>
|
431
|
-
</PropertyGroup>
|
432
|
-
|
433
|
-
<ItemGroup>
|
434
|
-
<ProjectReference Include="lib\Library.csproj" />
|
435
|
-
</ItemGroup>
|
436
|
-
|
437
|
-
<ItemGroup>
|
438
|
-
<PackageReference Include="Some.Package" Version="9.0.1" />
|
439
|
-
</ItemGroup>
|
440
|
-
</Project>
|
441
|
-
""",
|
442
|
-
additionalFiles:
|
443
|
-
[
|
444
|
-
("lib/Library.csproj", $"""
|
445
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
446
|
-
<PropertyGroup>
|
447
|
-
<TargetFramework>net8.0</TargetFramework>
|
448
|
-
</PropertyGroup>
|
449
|
-
|
450
|
-
<ItemGroup>
|
451
|
-
<PackageReference Include="Some.Package" Version="9.0.1" />
|
452
|
-
</ItemGroup>
|
453
|
-
</Project>
|
454
|
-
""")
|
455
|
-
],
|
456
|
-
// expected
|
457
|
-
expectedProjectContents: $"""
|
458
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
459
|
-
<PropertyGroup>
|
460
|
-
<TargetFramework>net8.0</TargetFramework>
|
461
|
-
</PropertyGroup>
|
462
|
-
|
463
|
-
<ItemGroup>
|
464
|
-
<ProjectReference Include="lib\Library.csproj" />
|
465
|
-
</ItemGroup>
|
466
|
-
|
467
|
-
<ItemGroup>
|
468
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
469
|
-
</ItemGroup>
|
470
|
-
</Project>
|
471
|
-
""",
|
472
|
-
additionalFilesExpected:
|
473
|
-
[
|
474
|
-
("lib/Library.csproj", $"""
|
475
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
476
|
-
<PropertyGroup>
|
477
|
-
<TargetFramework>net8.0</TargetFramework>
|
478
|
-
</PropertyGroup>
|
479
|
-
|
480
|
-
<ItemGroup>
|
481
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
482
|
-
</ItemGroup>
|
483
|
-
</Project>
|
484
|
-
""")
|
485
|
-
]);
|
486
|
-
}
|
487
|
-
|
488
|
-
[Theory]
|
489
|
-
[InlineData("$(SomePackageVersion")]
|
490
|
-
[InlineData("$SomePackageVersion)")]
|
491
|
-
[InlineData("$SomePackageVersion")]
|
492
|
-
[InlineData("SomePackageVersion)")]
|
493
|
-
public async Task Update_InvalidFile_DoesNotThrow(string versionString)
|
494
|
-
{
|
495
|
-
await TestNoChangeforProject("Some.Package", "9.0.1", "13.0.1",
|
496
|
-
packages:
|
497
|
-
[
|
498
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
499
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
500
|
-
],
|
501
|
-
projectContents: $"""
|
502
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
503
|
-
<PropertyGroup>
|
504
|
-
<TargetFramework>net8.0</TargetFramework>
|
505
|
-
<SomePackageVersion>9.0.1</SomePackageVersion>
|
506
|
-
</PropertyGroup>
|
507
|
-
<ItemGroup>
|
508
|
-
<PackageReference Include="Some.Package" Version="{versionString}" />
|
509
|
-
</ItemGroup>
|
510
|
-
</Project>
|
511
|
-
"""
|
512
|
-
);
|
513
|
-
}
|
514
|
-
|
515
|
-
[Fact]
|
516
|
-
public async Task UpdateFindsNearestNugetConfig_AndSucceeds()
|
517
|
-
{
|
518
|
-
//
|
519
|
-
// this test needs a very specific setup to run, so we have to do it manually
|
520
|
-
//
|
521
|
-
using TemporaryDirectory tempDirectory = new();
|
522
|
-
|
523
|
-
// the top-level NuGet.Config has a package feed that doesn't exist
|
524
|
-
await File.WriteAllTextAsync(Path.Combine(tempDirectory.DirectoryPath, "NuGet.Config"), """
|
525
|
-
<?xml version="1.0" encoding="utf-8"?>
|
526
|
-
<configuration>
|
527
|
-
<packageSources>
|
528
|
-
<clear />
|
529
|
-
<add key="local-feed" value="/var/path/that/does/not/exist" />
|
530
|
-
</packageSources>
|
531
|
-
</configuration>
|
532
|
-
"""
|
533
|
-
);
|
534
|
-
|
535
|
-
// now place the "real" test files under `src/`
|
536
|
-
string srcDirectory = Path.Combine(tempDirectory.DirectoryPath, "src");
|
537
|
-
Directory.CreateDirectory(srcDirectory);
|
538
|
-
|
539
|
-
// the project file
|
540
|
-
string projectPath = Path.Combine(srcDirectory, "project.csproj");
|
541
|
-
await File.WriteAllTextAsync(projectPath, """
|
542
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
543
|
-
<PropertyGroup>
|
544
|
-
<TargetFramework>net8.0</TargetFramework>
|
545
|
-
</PropertyGroup>
|
546
|
-
<ItemGroup>
|
547
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
548
|
-
</ItemGroup>
|
549
|
-
</Project>
|
550
|
-
"""
|
551
|
-
);
|
552
|
-
// another NuGet.Config, but with a usable package feed
|
553
|
-
string packageFeedLocation = Path.Combine(tempDirectory.DirectoryPath, "test-package-feed");
|
554
|
-
Directory.CreateDirectory(packageFeedLocation);
|
555
|
-
await File.WriteAllTextAsync(Path.Combine(srcDirectory, "NuGet.Config"), $"""
|
556
|
-
<?xml version="1.0" encoding="utf-8"?>
|
557
|
-
<configuration>
|
558
|
-
<packageSources>
|
559
|
-
<clear />
|
560
|
-
<add key="local-feed" value="{packageFeedLocation}" />
|
561
|
-
</packageSources>
|
562
|
-
</configuration>
|
563
|
-
"""
|
564
|
-
);
|
565
|
-
// populate some packages
|
566
|
-
foreach (MockNuGetPackage package in MockNuGetPackage.CommonPackages.Concat(
|
567
|
-
[
|
568
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0"),
|
569
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.1.0", "net8.0")
|
570
|
-
]))
|
571
|
-
{
|
572
|
-
package.WriteToDirectory(packageFeedLocation);
|
573
|
-
}
|
574
|
-
|
575
|
-
//
|
576
|
-
// do the update
|
577
|
-
//
|
578
|
-
UpdaterWorker worker = new("TEST-JOB-ID", new ExperimentsManager(), new TestLogger());
|
579
|
-
await worker.RunAsync(tempDirectory.DirectoryPath, projectPath, "Some.Package", "1.0.0", "1.1.0", isTransitive: false);
|
580
|
-
|
581
|
-
//
|
582
|
-
// verify the update occurred
|
583
|
-
//
|
584
|
-
string actualProjectContents = await File.ReadAllTextAsync(projectPath);
|
585
|
-
Assert.Contains("Version=\"1.1.0\"", actualProjectContents);
|
586
|
-
}
|
587
|
-
|
588
|
-
[Fact]
|
589
|
-
public async Task UpdateReturnsEmptyArray_WhenBuildFails()
|
590
|
-
{
|
591
|
-
await TestNoChangeforProject("Some.Package", "9.0.1", "13.0.1",
|
592
|
-
packages: [], // nothing specified, update will fail
|
593
|
-
projectContents: """
|
594
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
595
|
-
<PropertyGroup>
|
596
|
-
<TargetFramework>netstandard2.0</TargetFramework>
|
597
|
-
</PropertyGroup>
|
598
|
-
<ItemGroup>
|
599
|
-
<PackageReference Include="Some.Package" Version="9.0.1" />
|
600
|
-
</ItemGroup>
|
601
|
-
</Project>
|
602
|
-
""",
|
603
|
-
additionalFiles:
|
604
|
-
[
|
605
|
-
(Path: "NuGet.config", Content: """
|
606
|
-
<?xml version="1.0" encoding="utf-8"?>
|
607
|
-
<configuration>
|
608
|
-
<config>
|
609
|
-
<add key="repositoryPath" value="./packages" />
|
610
|
-
</config>
|
611
|
-
<packageSources>
|
612
|
-
<clear />
|
613
|
-
<add key="nuget_BrokenFeed" value="https://api.nuget.org/BrokenFeed" />
|
614
|
-
</packageSources>
|
615
|
-
</configuration>
|
616
|
-
""")
|
617
|
-
]
|
618
|
-
);
|
619
|
-
}
|
620
|
-
|
621
|
-
[Fact]
|
622
|
-
public async Task UpdateExactMatchVersionAttribute_InProjectFile_ForPackageReferenceInclude()
|
623
|
-
{
|
624
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
625
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
626
|
-
packages:
|
627
|
-
[
|
628
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
629
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
630
|
-
],
|
631
|
-
// initial
|
632
|
-
projectContents: """
|
633
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
634
|
-
<PropertyGroup>
|
635
|
-
<TargetFramework>net8.0</TargetFramework>
|
636
|
-
</PropertyGroup>
|
637
|
-
|
638
|
-
<ItemGroup>
|
639
|
-
<PackageReference Include="Some.Package" Version="[9.0.1]" />
|
640
|
-
</ItemGroup>
|
641
|
-
</Project>
|
642
|
-
""",
|
643
|
-
// expected
|
644
|
-
expectedProjectContents: """
|
645
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
646
|
-
<PropertyGroup>
|
647
|
-
<TargetFramework>net8.0</TargetFramework>
|
648
|
-
</PropertyGroup>
|
649
|
-
|
650
|
-
<ItemGroup>
|
651
|
-
<PackageReference Include="Some.Package" Version="[13.0.1]" />
|
652
|
-
</ItemGroup>
|
653
|
-
</Project>
|
654
|
-
"""
|
655
|
-
);
|
656
|
-
}
|
657
|
-
|
658
|
-
[Theory]
|
659
|
-
[InlineData(true)]
|
660
|
-
[InlineData(false)]
|
661
|
-
public async Task AddPackageReference_InProjectFile_ForTransientDependency(bool useLegacyDependencySolver)
|
662
|
-
{
|
663
|
-
var experimentsManager = new ExperimentsManager() { UseLegacyDependencySolver = useLegacyDependencySolver };
|
664
|
-
// add transient package Some.Transient.Dependency from 5.0.1 to 5.0.2
|
665
|
-
await TestUpdateForProject("Some.Transient.Dependency", "5.0.1", "5.0.2", isTransitive: true,
|
666
|
-
experimentsManager: experimentsManager,
|
667
|
-
packages:
|
668
|
-
[
|
669
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "3.1.3", "net8.0", [(null, [("Some.Transient.Dependency", "5.0.1")])]),
|
670
|
-
MockNuGetPackage.CreateSimplePackage("Some.Transient.Dependency", "5.0.1", "net8.0"),
|
671
|
-
MockNuGetPackage.CreateSimplePackage("Some.Transient.Dependency", "5.0.2", "net8.0"),
|
672
|
-
],
|
673
|
-
// initial
|
674
|
-
projectContents: """
|
675
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
676
|
-
|
677
|
-
<PropertyGroup>
|
678
|
-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
679
|
-
<TargetFramework>net8.0</TargetFramework>
|
680
|
-
</PropertyGroup>
|
681
|
-
|
682
|
-
<ItemGroup>
|
683
|
-
<PackageReference Include="Some.Package" Version="3.1.3" />
|
684
|
-
</ItemGroup>
|
685
|
-
|
686
|
-
</Project>
|
687
|
-
""",
|
688
|
-
// expected
|
689
|
-
expectedProjectContents: """
|
690
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
691
|
-
|
692
|
-
<PropertyGroup>
|
693
|
-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
694
|
-
<TargetFramework>net8.0</TargetFramework>
|
695
|
-
</PropertyGroup>
|
696
|
-
|
697
|
-
<ItemGroup>
|
698
|
-
<PackageReference Include="Some.Package" Version="3.1.3" />
|
699
|
-
<PackageReference Include="Some.Transient.Dependency" Version="5.0.2" />
|
700
|
-
</ItemGroup>
|
701
|
-
|
702
|
-
</Project>
|
703
|
-
"""
|
704
|
-
);
|
705
|
-
}
|
706
|
-
|
707
|
-
[Fact]
|
708
|
-
public async Task TransitiveDependencyCanBeAddedWithMismatchingSdk()
|
709
|
-
{
|
710
|
-
await TestUpdateForProject("Some.Transitive.Package", "1.0.0", "1.0.1", isTransitive: true,
|
711
|
-
packages:
|
712
|
-
[
|
713
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0", [(null, [("Some.Transitive.Package", "1.0.0")])]),
|
714
|
-
MockNuGetPackage.CreateSimplePackage("Some.Transitive.Package", "1.0.0", "net8.0"),
|
715
|
-
MockNuGetPackage.CreateSimplePackage("Some.Transitive.Package", "1.0.1", "net8.0"),
|
716
|
-
],
|
717
|
-
projectContents: """
|
718
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
719
|
-
<PropertyGroup>
|
720
|
-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
721
|
-
<TargetFramework>net8.0</TargetFramework>
|
722
|
-
</PropertyGroup>
|
723
|
-
<ItemGroup>
|
724
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
725
|
-
</ItemGroup>
|
726
|
-
</Project>
|
727
|
-
""",
|
728
|
-
additionalFiles:
|
729
|
-
[
|
730
|
-
("global.json", """
|
731
|
-
{
|
732
|
-
"sdk": {
|
733
|
-
"version": "99.99.999" // this version doesn't match anything that's installed
|
734
|
-
}
|
735
|
-
}
|
736
|
-
""")
|
737
|
-
],
|
738
|
-
expectedProjectContents: """
|
739
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
740
|
-
<PropertyGroup>
|
741
|
-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
742
|
-
<TargetFramework>net8.0</TargetFramework>
|
743
|
-
</PropertyGroup>
|
744
|
-
<ItemGroup>
|
745
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
746
|
-
<PackageReference Include="Some.Transitive.Package" Version="1.0.1" />
|
747
|
-
</ItemGroup>
|
748
|
-
</Project>
|
749
|
-
"""
|
750
|
-
);
|
751
|
-
}
|
752
|
-
|
753
|
-
[Fact]
|
754
|
-
public async Task TransitiveDependencyCanBeAddedWithCustomMSBuildSdk()
|
755
|
-
{
|
756
|
-
await TestUpdateForProject("Some.Transitive.Package", "1.0.0", "1.0.1", isTransitive: true,
|
757
|
-
packages:
|
758
|
-
[
|
759
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0", [(null, [("Some.Transitive.Package", "1.0.0")])]),
|
760
|
-
MockNuGetPackage.CreateSimplePackage("Some.Transitive.Package", "1.0.0", "net8.0"),
|
761
|
-
MockNuGetPackage.CreateSimplePackage("Some.Transitive.Package", "1.0.1", "net8.0"),
|
762
|
-
MockNuGetPackage.CreateMSBuildSdkPackage("Custom.MSBuild.Sdk", "1.2.3"),
|
763
|
-
],
|
764
|
-
projectContents: """
|
765
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
766
|
-
<PropertyGroup>
|
767
|
-
<TargetFramework>net8.0</TargetFramework>
|
768
|
-
</PropertyGroup>
|
769
|
-
<ItemGroup>
|
770
|
-
<PackageReference Include="Some.Package" />
|
771
|
-
</ItemGroup>
|
772
|
-
</Project>
|
773
|
-
""",
|
774
|
-
additionalFiles:
|
775
|
-
[
|
776
|
-
("Directory.Build.props", """
|
777
|
-
<Project>
|
778
|
-
<Import Project="Sdk.props" Sdk="Custom.MSBuild.Sdk" />
|
779
|
-
</Project>
|
780
|
-
"""),
|
781
|
-
("Directory.Packages.props", """
|
782
|
-
<Project>
|
783
|
-
<PropertyGroup>
|
784
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
785
|
-
</PropertyGroup>
|
786
|
-
<ItemGroup>
|
787
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
788
|
-
</ItemGroup>
|
789
|
-
</Project>
|
790
|
-
"""),
|
791
|
-
("global.json", """
|
792
|
-
{
|
793
|
-
"sdk": {
|
794
|
-
"version": "99.99.999" // this version doesn't match anything that's installed
|
795
|
-
},
|
796
|
-
"msbuild-sdks": {
|
797
|
-
"Custom.MSBuild.Sdk": "1.2.3"
|
798
|
-
}
|
799
|
-
}
|
800
|
-
""")
|
801
|
-
],
|
802
|
-
expectedProjectContents: """
|
803
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
804
|
-
<PropertyGroup>
|
805
|
-
<TargetFramework>net8.0</TargetFramework>
|
806
|
-
</PropertyGroup>
|
807
|
-
<ItemGroup>
|
808
|
-
<PackageReference Include="Some.Package" />
|
809
|
-
<PackageReference Include="Some.Transitive.Package" />
|
810
|
-
</ItemGroup>
|
811
|
-
</Project>
|
812
|
-
""",
|
813
|
-
additionalFilesExpected:
|
814
|
-
[
|
815
|
-
("Directory.Packages.props", """
|
816
|
-
<Project>
|
817
|
-
<PropertyGroup>
|
818
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
819
|
-
</PropertyGroup>
|
820
|
-
<ItemGroup>
|
821
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
822
|
-
<PackageVersion Include="Some.Transitive.Package" Version="1.0.1" />
|
823
|
-
</ItemGroup>
|
824
|
-
</Project>
|
825
|
-
""")
|
826
|
-
]
|
827
|
-
);
|
828
|
-
}
|
829
|
-
|
830
|
-
[Fact]
|
831
|
-
public async Task UpdateVersionAttribute_InProjectFile_ForAnalyzerPackageReferenceInclude()
|
832
|
-
{
|
833
|
-
// update Some.Analyzer from 3.3.0 to 3.3.4
|
834
|
-
await TestUpdateForProject("Some.Analyzer", "3.3.0", "3.3.4",
|
835
|
-
packages:
|
836
|
-
[
|
837
|
-
MockNuGetPackage.CreateAnalyzerPackage("Some.Analyzer", "3.3.0"),
|
838
|
-
MockNuGetPackage.CreateAnalyzerPackage("Some.Analyzer", "3.3.4"),
|
839
|
-
],
|
840
|
-
// initial
|
841
|
-
projectContents: """
|
842
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
843
|
-
<PropertyGroup>
|
844
|
-
<TargetFramework>net8.0</TargetFramework>
|
845
|
-
</PropertyGroup>
|
846
|
-
|
847
|
-
<ItemGroup>
|
848
|
-
<PackageReference Include="Some.Analyzer" Version="3.3.0">
|
849
|
-
<PrivateAssets>all</PrivateAssets>
|
850
|
-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
851
|
-
</PackageReference>
|
852
|
-
</ItemGroup>
|
853
|
-
</Project>
|
854
|
-
""",
|
855
|
-
// expected
|
856
|
-
expectedProjectContents: """
|
857
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
858
|
-
<PropertyGroup>
|
859
|
-
<TargetFramework>net8.0</TargetFramework>
|
860
|
-
</PropertyGroup>
|
861
|
-
|
862
|
-
<ItemGroup>
|
863
|
-
<PackageReference Include="Some.Analyzer" Version="3.3.4">
|
864
|
-
<PrivateAssets>all</PrivateAssets>
|
865
|
-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
866
|
-
</PackageReference>
|
867
|
-
</ItemGroup>
|
868
|
-
</Project>
|
869
|
-
"""
|
870
|
-
);
|
871
|
-
}
|
872
|
-
|
873
|
-
[Fact]
|
874
|
-
public async Task UpdateVersionAttribute_InProjectFile_ForMultiplePackageReferences()
|
875
|
-
{
|
876
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
877
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
878
|
-
packages:
|
879
|
-
[
|
880
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
881
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
882
|
-
],
|
883
|
-
// initial
|
884
|
-
projectContents: """
|
885
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
886
|
-
<PropertyGroup>
|
887
|
-
<TargetFramework>net8.0</TargetFramework>
|
888
|
-
</PropertyGroup>
|
889
|
-
|
890
|
-
<ItemGroup>
|
891
|
-
<PackageReference Include="Some.PACKAGE" Version="9.0.1" />
|
892
|
-
<PackageReference Update="Some.Package" Version="9.0.1" />
|
893
|
-
</ItemGroup>
|
894
|
-
</Project>
|
895
|
-
""",
|
896
|
-
// expected
|
897
|
-
expectedProjectContents: """
|
898
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
899
|
-
<PropertyGroup>
|
900
|
-
<TargetFramework>net8.0</TargetFramework>
|
901
|
-
</PropertyGroup>
|
902
|
-
|
903
|
-
<ItemGroup>
|
904
|
-
<PackageReference Include="Some.PACKAGE" Version="13.0.1" />
|
905
|
-
<PackageReference Update="Some.Package" Version="13.0.1" />
|
906
|
-
</ItemGroup>
|
907
|
-
</Project>
|
908
|
-
"""
|
909
|
-
);
|
910
|
-
}
|
911
|
-
|
912
|
-
[Fact]
|
913
|
-
public async Task UpdateVersionAttribute_InProjectFile_ForPackageReferenceUpdate()
|
914
|
-
{
|
915
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
916
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
917
|
-
packages:
|
918
|
-
[
|
919
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
920
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
921
|
-
],
|
922
|
-
// initial
|
923
|
-
projectContents: """
|
924
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
925
|
-
<PropertyGroup>
|
926
|
-
<TargetFramework>net8.0</TargetFramework>
|
927
|
-
</PropertyGroup>
|
928
|
-
|
929
|
-
<ItemGroup>
|
930
|
-
<PackageReference Include="Some.Package" />
|
931
|
-
<PackageReference Update="Some.Package" Version="9.0.1" />
|
932
|
-
</ItemGroup>
|
933
|
-
</Project>
|
934
|
-
""",
|
935
|
-
// expected
|
936
|
-
expectedProjectContents: """
|
937
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
938
|
-
<PropertyGroup>
|
939
|
-
<TargetFramework>net8.0</TargetFramework>
|
940
|
-
</PropertyGroup>
|
941
|
-
|
942
|
-
<ItemGroup>
|
943
|
-
<PackageReference Include="Some.Package" />
|
944
|
-
<PackageReference Update="Some.Package" Version="13.0.1" />
|
945
|
-
</ItemGroup>
|
946
|
-
</Project>
|
947
|
-
"""
|
948
|
-
);
|
949
|
-
}
|
950
|
-
|
951
|
-
[Fact]
|
952
|
-
public async Task UpdateVersionAttribute_InProjectFile_ForPackageReferenceUpdateWithSemicolon()
|
953
|
-
{
|
954
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
955
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
956
|
-
packages:
|
957
|
-
[
|
958
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
959
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package2", "9.0.1", "net8.0"),
|
960
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
961
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package2", "13.0.1", "net8.0"),
|
962
|
-
],
|
963
|
-
// initial
|
964
|
-
projectContents: """
|
965
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
966
|
-
<PropertyGroup>
|
967
|
-
<TargetFramework>net8.0</TargetFramework>
|
968
|
-
</PropertyGroup>
|
969
|
-
|
970
|
-
<ItemGroup>
|
971
|
-
<PackageReference Include="Some.Package;Some.Package2" Version="9.0.1" />
|
972
|
-
</ItemGroup>
|
973
|
-
</Project>
|
974
|
-
""",
|
975
|
-
// expected
|
976
|
-
expectedProjectContents: """
|
977
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
978
|
-
<PropertyGroup>
|
979
|
-
<TargetFramework>net8.0</TargetFramework>
|
980
|
-
</PropertyGroup>
|
981
|
-
|
982
|
-
<ItemGroup>
|
983
|
-
<PackageReference Include="Some.Package;Some.Package2" Version="13.0.1" />
|
984
|
-
</ItemGroup>
|
985
|
-
</Project>
|
986
|
-
"""
|
987
|
-
);
|
988
|
-
}
|
989
|
-
|
990
|
-
[Fact]
|
991
|
-
public async Task UpdateVersionAttribute_InDirectoryPackages_ForPackageVersion()
|
992
|
-
{
|
993
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
994
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
995
|
-
packages:
|
996
|
-
[
|
997
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
998
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
999
|
-
],
|
1000
|
-
// initial
|
1001
|
-
projectContents: """
|
1002
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1003
|
-
<PropertyGroup>
|
1004
|
-
<TargetFramework>net8.0</TargetFramework>
|
1005
|
-
</PropertyGroup>
|
1006
|
-
|
1007
|
-
<ItemGroup>
|
1008
|
-
<PackageReference Include="Some.Package" />
|
1009
|
-
</ItemGroup>
|
1010
|
-
</Project>
|
1011
|
-
""",
|
1012
|
-
additionalFiles:
|
1013
|
-
[
|
1014
|
-
("Directory.Build.props", "<Project />"),
|
1015
|
-
("Directory.Packages.props", """
|
1016
|
-
<Project>
|
1017
|
-
<PropertyGroup>
|
1018
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1019
|
-
</PropertyGroup>
|
1020
|
-
|
1021
|
-
<ItemGroup>
|
1022
|
-
<PackageVersion Include="Some.Package" Version="9.0.1" />
|
1023
|
-
</ItemGroup>
|
1024
|
-
</Project>
|
1025
|
-
""")
|
1026
|
-
],
|
1027
|
-
// expected
|
1028
|
-
expectedProjectContents: """
|
1029
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1030
|
-
<PropertyGroup>
|
1031
|
-
<TargetFramework>net8.0</TargetFramework>
|
1032
|
-
</PropertyGroup>
|
1033
|
-
|
1034
|
-
<ItemGroup>
|
1035
|
-
<PackageReference Include="Some.Package" />
|
1036
|
-
</ItemGroup>
|
1037
|
-
</Project>
|
1038
|
-
""",
|
1039
|
-
additionalFilesExpected:
|
1040
|
-
[
|
1041
|
-
("Directory.Packages.props", """
|
1042
|
-
<Project>
|
1043
|
-
<PropertyGroup>
|
1044
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1045
|
-
</PropertyGroup>
|
1046
|
-
|
1047
|
-
<ItemGroup>
|
1048
|
-
<PackageVersion Include="Some.Package" Version="13.0.1" />
|
1049
|
-
</ItemGroup>
|
1050
|
-
</Project>
|
1051
|
-
""")
|
1052
|
-
]
|
1053
|
-
);
|
1054
|
-
}
|
1055
|
-
|
1056
|
-
[Fact]
|
1057
|
-
public async Task UpdateExactMatchVersionAttribute_InDirectoryPackages_ForPackageVersion()
|
1058
|
-
{
|
1059
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
1060
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1061
|
-
packages:
|
1062
|
-
[
|
1063
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1064
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1065
|
-
],
|
1066
|
-
// initial
|
1067
|
-
projectContents: """
|
1068
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1069
|
-
<PropertyGroup>
|
1070
|
-
<TargetFramework>net8.0</TargetFramework>
|
1071
|
-
</PropertyGroup>
|
1072
|
-
|
1073
|
-
<ItemGroup>
|
1074
|
-
<PackageReference Include="Some.Package" />
|
1075
|
-
</ItemGroup>
|
1076
|
-
</Project>
|
1077
|
-
""",
|
1078
|
-
additionalFiles:
|
1079
|
-
[
|
1080
|
-
("Directory.Build.props", "<Project />"),
|
1081
|
-
("Directory.Packages.props", """
|
1082
|
-
<Project>
|
1083
|
-
<PropertyGroup>
|
1084
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1085
|
-
</PropertyGroup>
|
1086
|
-
|
1087
|
-
<ItemGroup>
|
1088
|
-
<PackageVersion Include="Some.Package" Version="[9.0.1]" />
|
1089
|
-
</ItemGroup>
|
1090
|
-
</Project>
|
1091
|
-
""")
|
1092
|
-
],
|
1093
|
-
// expected
|
1094
|
-
expectedProjectContents: """
|
1095
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1096
|
-
<PropertyGroup>
|
1097
|
-
<TargetFramework>net8.0</TargetFramework>
|
1098
|
-
</PropertyGroup>
|
1099
|
-
|
1100
|
-
<ItemGroup>
|
1101
|
-
<PackageReference Include="Some.Package" />
|
1102
|
-
</ItemGroup>
|
1103
|
-
</Project>
|
1104
|
-
""",
|
1105
|
-
additionalFilesExpected:
|
1106
|
-
[
|
1107
|
-
("Directory.Packages.props", """
|
1108
|
-
<Project>
|
1109
|
-
<PropertyGroup>
|
1110
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1111
|
-
</PropertyGroup>
|
1112
|
-
|
1113
|
-
<ItemGroup>
|
1114
|
-
<PackageVersion Include="Some.Package" Version="[13.0.1]" />
|
1115
|
-
</ItemGroup>
|
1116
|
-
</Project>
|
1117
|
-
""")
|
1118
|
-
]
|
1119
|
-
);
|
1120
|
-
}
|
1121
|
-
|
1122
|
-
[Fact]
|
1123
|
-
public async Task UpdatePropertyValue_InProjectFile_ForPackageReferenceIncludeWithExactVersion()
|
1124
|
-
{
|
1125
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1126
|
-
packages:
|
1127
|
-
[
|
1128
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1129
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1130
|
-
],
|
1131
|
-
// initial
|
1132
|
-
projectContents: """
|
1133
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1134
|
-
<PropertyGroup>
|
1135
|
-
<TargetFramework>net8.0</TargetFramework>
|
1136
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1137
|
-
</PropertyGroup>
|
1138
|
-
|
1139
|
-
<ItemGroup>
|
1140
|
-
<PackageReference Include="Some.Package" Version="[$(SomePackagePackageVersion)]" />
|
1141
|
-
</ItemGroup>
|
1142
|
-
</Project>
|
1143
|
-
""",
|
1144
|
-
// expected
|
1145
|
-
expectedProjectContents: """
|
1146
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1147
|
-
<PropertyGroup>
|
1148
|
-
<TargetFramework>net8.0</TargetFramework>
|
1149
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1150
|
-
</PropertyGroup>
|
1151
|
-
|
1152
|
-
<ItemGroup>
|
1153
|
-
<PackageReference Include="Some.Package" Version="[$(SomePackagePackageVersion)]" />
|
1154
|
-
</ItemGroup>
|
1155
|
-
</Project>
|
1156
|
-
"""
|
1157
|
-
);
|
1158
|
-
}
|
1159
|
-
|
1160
|
-
[Fact]
|
1161
|
-
public async Task UpdateDifferentCasedPropertyValue_InProjectFile_ForPackageReferenceInclude()
|
1162
|
-
{
|
1163
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1164
|
-
packages:
|
1165
|
-
[
|
1166
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1167
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1168
|
-
],
|
1169
|
-
// initial
|
1170
|
-
projectContents: """
|
1171
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1172
|
-
<PropertyGroup>
|
1173
|
-
<TargetFramework>net8.0</TargetFramework>
|
1174
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1175
|
-
</PropertyGroup>
|
1176
|
-
|
1177
|
-
<ItemGroup>
|
1178
|
-
<PackageReference Include="Some.Package" Version="$(somepackagepackageversion)" />
|
1179
|
-
</ItemGroup>
|
1180
|
-
</Project>
|
1181
|
-
""",
|
1182
|
-
// expected
|
1183
|
-
expectedProjectContents: """
|
1184
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1185
|
-
<PropertyGroup>
|
1186
|
-
<TargetFramework>net8.0</TargetFramework>
|
1187
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1188
|
-
</PropertyGroup>
|
1189
|
-
|
1190
|
-
<ItemGroup>
|
1191
|
-
<PackageReference Include="Some.Package" Version="$(somepackagepackageversion)" />
|
1192
|
-
</ItemGroup>
|
1193
|
-
</Project>
|
1194
|
-
"""
|
1195
|
-
);
|
1196
|
-
}
|
1197
|
-
|
1198
|
-
[Fact]
|
1199
|
-
public async Task UpdatePropertyValue_InProjectFile_ForPackageReferenceInclude()
|
1200
|
-
{
|
1201
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1202
|
-
packages:
|
1203
|
-
[
|
1204
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1205
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1206
|
-
],
|
1207
|
-
// initial
|
1208
|
-
projectContents: """
|
1209
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1210
|
-
<PropertyGroup>
|
1211
|
-
<TargetFramework>net8.0</TargetFramework>
|
1212
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1213
|
-
</PropertyGroup>
|
1214
|
-
|
1215
|
-
<ItemGroup>
|
1216
|
-
<PackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1217
|
-
</ItemGroup>
|
1218
|
-
</Project>
|
1219
|
-
""",
|
1220
|
-
// expected
|
1221
|
-
expectedProjectContents: """
|
1222
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1223
|
-
<PropertyGroup>
|
1224
|
-
<TargetFramework>net8.0</TargetFramework>
|
1225
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1226
|
-
</PropertyGroup>
|
1227
|
-
|
1228
|
-
<ItemGroup>
|
1229
|
-
<PackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1230
|
-
</ItemGroup>
|
1231
|
-
</Project>
|
1232
|
-
"""
|
1233
|
-
);
|
1234
|
-
}
|
1235
|
-
|
1236
|
-
[Fact]
|
1237
|
-
public async Task UpdateExactMatchPropertyValue_InProjectFile_ForPackageReferenceInclude()
|
1238
|
-
{
|
1239
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1240
|
-
packages:
|
1241
|
-
[
|
1242
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1243
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1244
|
-
],
|
1245
|
-
// initial
|
1246
|
-
projectContents: """
|
1247
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1248
|
-
<PropertyGroup>
|
1249
|
-
<TargetFramework>net8.0</TargetFramework>
|
1250
|
-
<SomePackagePackageVersion>[9.0.1]</SomePackagePackageVersion>
|
1251
|
-
</PropertyGroup>
|
1252
|
-
|
1253
|
-
<ItemGroup>
|
1254
|
-
<PackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1255
|
-
</ItemGroup>
|
1256
|
-
</Project>
|
1257
|
-
""",
|
1258
|
-
// expected
|
1259
|
-
expectedProjectContents: """
|
1260
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1261
|
-
<PropertyGroup>
|
1262
|
-
<TargetFramework>net8.0</TargetFramework>
|
1263
|
-
<SomePackagePackageVersion>[13.0.1]</SomePackagePackageVersion>
|
1264
|
-
</PropertyGroup>
|
1265
|
-
|
1266
|
-
<ItemGroup>
|
1267
|
-
<PackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1268
|
-
</ItemGroup>
|
1269
|
-
</Project>
|
1270
|
-
"""
|
1271
|
-
);
|
1272
|
-
}
|
1273
|
-
|
1274
|
-
[Fact]
|
1275
|
-
public async Task UpdateVersionAttributeAndPropertyValue_InProjectFile_ForMultiplePackageReferences()
|
1276
|
-
{
|
1277
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1278
|
-
packages:
|
1279
|
-
[
|
1280
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1281
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1282
|
-
],
|
1283
|
-
// initial
|
1284
|
-
projectContents: """
|
1285
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1286
|
-
<PropertyGroup>
|
1287
|
-
<TargetFramework>net8.0</TargetFramework>
|
1288
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1289
|
-
</PropertyGroup>
|
1290
|
-
|
1291
|
-
<ItemGroup>
|
1292
|
-
<PackageReference Include="Some.Package" Version="9.0.1" />
|
1293
|
-
<PackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1294
|
-
</ItemGroup>
|
1295
|
-
</Project>
|
1296
|
-
""",
|
1297
|
-
// expected
|
1298
|
-
expectedProjectContents: """
|
1299
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1300
|
-
<PropertyGroup>
|
1301
|
-
<TargetFramework>net8.0</TargetFramework>
|
1302
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1303
|
-
</PropertyGroup>
|
1304
|
-
|
1305
|
-
<ItemGroup>
|
1306
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
1307
|
-
<PackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1308
|
-
</ItemGroup>
|
1309
|
-
</Project>
|
1310
|
-
"""
|
1311
|
-
);
|
1312
|
-
}
|
1313
|
-
|
1314
|
-
[Fact]
|
1315
|
-
public async Task UpdatePropertyValue_InProjectFile_ForPackageReferenceUpdate()
|
1316
|
-
{
|
1317
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1318
|
-
packages:
|
1319
|
-
[
|
1320
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1321
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1322
|
-
],
|
1323
|
-
// initial
|
1324
|
-
projectContents: """
|
1325
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1326
|
-
<PropertyGroup>
|
1327
|
-
<TargetFramework>net8.0</TargetFramework>
|
1328
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1329
|
-
</PropertyGroup>
|
1330
|
-
|
1331
|
-
<ItemGroup>
|
1332
|
-
<PackageReference Include="Some.Package" />
|
1333
|
-
<PackageReference Update="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1334
|
-
</ItemGroup>
|
1335
|
-
</Project>
|
1336
|
-
""",
|
1337
|
-
// expected
|
1338
|
-
expectedProjectContents: """
|
1339
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1340
|
-
<PropertyGroup>
|
1341
|
-
<TargetFramework>net8.0</TargetFramework>
|
1342
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1343
|
-
</PropertyGroup>
|
1344
|
-
|
1345
|
-
<ItemGroup>
|
1346
|
-
<PackageReference Include="Some.Package" />
|
1347
|
-
<PackageReference Update="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1348
|
-
</ItemGroup>
|
1349
|
-
</Project>
|
1350
|
-
"""
|
1351
|
-
);
|
1352
|
-
}
|
1353
|
-
|
1354
|
-
[Fact]
|
1355
|
-
public async Task UpdatePropertyValue_InDirectoryProps_ForPackageVersion()
|
1356
|
-
{
|
1357
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
1358
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1359
|
-
packages:
|
1360
|
-
[
|
1361
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1362
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1363
|
-
],
|
1364
|
-
// initial
|
1365
|
-
projectContents: """
|
1366
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1367
|
-
<PropertyGroup>
|
1368
|
-
<TargetFramework>net8.0</TargetFramework>
|
1369
|
-
</PropertyGroup>
|
1370
|
-
|
1371
|
-
<ItemGroup>
|
1372
|
-
<PackageReference Include="Some.Package" />
|
1373
|
-
</ItemGroup>
|
1374
|
-
</Project>
|
1375
|
-
""",
|
1376
|
-
additionalFiles:
|
1377
|
-
[
|
1378
|
-
("Directory.Build.props", "<Project />"),
|
1379
|
-
("Directory.Packages.props", """
|
1380
|
-
<Project>
|
1381
|
-
<PropertyGroup>
|
1382
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1383
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1384
|
-
</PropertyGroup>
|
1385
|
-
|
1386
|
-
<ItemGroup>
|
1387
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1388
|
-
</ItemGroup>
|
1389
|
-
</Project>
|
1390
|
-
""")
|
1391
|
-
],
|
1392
|
-
// expected
|
1393
|
-
expectedProjectContents: """
|
1394
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1395
|
-
<PropertyGroup>
|
1396
|
-
<TargetFramework>net8.0</TargetFramework>
|
1397
|
-
</PropertyGroup>
|
1398
|
-
|
1399
|
-
<ItemGroup>
|
1400
|
-
<PackageReference Include="Some.Package" />
|
1401
|
-
</ItemGroup>
|
1402
|
-
</Project>
|
1403
|
-
""",
|
1404
|
-
additionalFilesExpected:
|
1405
|
-
[
|
1406
|
-
("Directory.Packages.props", """
|
1407
|
-
<Project>
|
1408
|
-
<PropertyGroup>
|
1409
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1410
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1411
|
-
</PropertyGroup>
|
1412
|
-
|
1413
|
-
<ItemGroup>
|
1414
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1415
|
-
</ItemGroup>
|
1416
|
-
</Project>
|
1417
|
-
""")
|
1418
|
-
]
|
1419
|
-
);
|
1420
|
-
}
|
1421
|
-
|
1422
|
-
[Fact]
|
1423
|
-
public async Task UpdateExactMatchPropertyValue_InDirectoryProps_ForPackageVersion()
|
1424
|
-
{
|
1425
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
1426
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1427
|
-
packages:
|
1428
|
-
[
|
1429
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1430
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1431
|
-
],
|
1432
|
-
// initial
|
1433
|
-
projectContents: """
|
1434
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1435
|
-
<PropertyGroup>
|
1436
|
-
<TargetFramework>net8.0</TargetFramework>
|
1437
|
-
</PropertyGroup>
|
1438
|
-
|
1439
|
-
<ItemGroup>
|
1440
|
-
<PackageReference Include="Some.Package" />
|
1441
|
-
</ItemGroup>
|
1442
|
-
</Project>
|
1443
|
-
""",
|
1444
|
-
additionalFiles:
|
1445
|
-
[
|
1446
|
-
("Directory.Build.props", "<Project />"),
|
1447
|
-
("Directory.Packages.props", """
|
1448
|
-
<Project>
|
1449
|
-
<PropertyGroup>
|
1450
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1451
|
-
<SomePackagePackageVersion>[9.0.1]</SomePackagePackageVersion>
|
1452
|
-
</PropertyGroup>
|
1453
|
-
|
1454
|
-
<ItemGroup>
|
1455
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1456
|
-
</ItemGroup>
|
1457
|
-
</Project>
|
1458
|
-
""")
|
1459
|
-
],
|
1460
|
-
// expected
|
1461
|
-
expectedProjectContents: """
|
1462
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1463
|
-
<PropertyGroup>
|
1464
|
-
<TargetFramework>net8.0</TargetFramework>
|
1465
|
-
</PropertyGroup>
|
1466
|
-
|
1467
|
-
<ItemGroup>
|
1468
|
-
<PackageReference Include="Some.Package" />
|
1469
|
-
</ItemGroup>
|
1470
|
-
</Project>
|
1471
|
-
""",
|
1472
|
-
additionalFilesExpected:
|
1473
|
-
[
|
1474
|
-
("Directory.Packages.props", """
|
1475
|
-
<Project>
|
1476
|
-
<PropertyGroup>
|
1477
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1478
|
-
<SomePackagePackageVersion>[13.0.1]</SomePackagePackageVersion>
|
1479
|
-
</PropertyGroup>
|
1480
|
-
|
1481
|
-
<ItemGroup>
|
1482
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1483
|
-
</ItemGroup>
|
1484
|
-
</Project>
|
1485
|
-
""")
|
1486
|
-
]
|
1487
|
-
);
|
1488
|
-
}
|
1489
|
-
|
1490
|
-
[Fact]
|
1491
|
-
public async Task UpdateVersionOverrideAttributeAndPropertyValue_InProjectFileAndDirectoryProps_ForPackageVersion()
|
1492
|
-
{
|
1493
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
1494
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1495
|
-
packages:
|
1496
|
-
[
|
1497
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1498
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1499
|
-
],
|
1500
|
-
// initial
|
1501
|
-
projectContents: """
|
1502
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1503
|
-
<PropertyGroup>
|
1504
|
-
<TargetFramework>net8.0</TargetFramework>
|
1505
|
-
</PropertyGroup>
|
1506
|
-
|
1507
|
-
<ItemGroup>
|
1508
|
-
<PackageReference Include="Some.Package" VersionOverride="9.0.1" />
|
1509
|
-
</ItemGroup>
|
1510
|
-
</Project>
|
1511
|
-
""",
|
1512
|
-
additionalFiles:
|
1513
|
-
[
|
1514
|
-
("Directory.Build.props", "<Project />"),
|
1515
|
-
("Directory.Packages.props", """
|
1516
|
-
<Project>
|
1517
|
-
<PropertyGroup>
|
1518
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1519
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1520
|
-
</PropertyGroup>
|
1521
|
-
|
1522
|
-
<ItemGroup>
|
1523
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1524
|
-
</ItemGroup>
|
1525
|
-
</Project>
|
1526
|
-
""")
|
1527
|
-
],
|
1528
|
-
// expected
|
1529
|
-
expectedProjectContents: """
|
1530
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1531
|
-
<PropertyGroup>
|
1532
|
-
<TargetFramework>net8.0</TargetFramework>
|
1533
|
-
</PropertyGroup>
|
1534
|
-
|
1535
|
-
<ItemGroup>
|
1536
|
-
<PackageReference Include="Some.Package" VersionOverride="13.0.1" />
|
1537
|
-
</ItemGroup>
|
1538
|
-
</Project>
|
1539
|
-
""",
|
1540
|
-
additionalFilesExpected:
|
1541
|
-
[
|
1542
|
-
("Directory.Packages.props", """
|
1543
|
-
<Project>
|
1544
|
-
<PropertyGroup>
|
1545
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1546
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1547
|
-
</PropertyGroup>
|
1548
|
-
|
1549
|
-
<ItemGroup>
|
1550
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1551
|
-
</ItemGroup>
|
1552
|
-
</Project>
|
1553
|
-
""")
|
1554
|
-
]
|
1555
|
-
);
|
1556
|
-
}
|
1557
|
-
|
1558
|
-
[Fact]
|
1559
|
-
public async Task UpdateVersionAttribute_InDirectoryProps_ForGlobalPackageReference()
|
1560
|
-
{
|
1561
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
1562
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1563
|
-
packages:
|
1564
|
-
[
|
1565
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1566
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1567
|
-
],
|
1568
|
-
// initial
|
1569
|
-
projectContents: """
|
1570
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1571
|
-
<PropertyGroup>
|
1572
|
-
<TargetFramework>net8.0</TargetFramework>
|
1573
|
-
</PropertyGroup>
|
1574
|
-
</Project>
|
1575
|
-
""",
|
1576
|
-
additionalFiles:
|
1577
|
-
[
|
1578
|
-
("Directory.Build.props", "<Project />"),
|
1579
|
-
("Directory.Packages.props", """
|
1580
|
-
<Project>
|
1581
|
-
<PropertyGroup>
|
1582
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1583
|
-
</PropertyGroup>
|
1584
|
-
|
1585
|
-
<ItemGroup>
|
1586
|
-
<GlobalPackageReference Include="Some.Package" Version="9.0.1" />
|
1587
|
-
</ItemGroup>
|
1588
|
-
</Project>
|
1589
|
-
""")
|
1590
|
-
],
|
1591
|
-
// expected
|
1592
|
-
expectedProjectContents: """
|
1593
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1594
|
-
<PropertyGroup>
|
1595
|
-
<TargetFramework>net8.0</TargetFramework>
|
1596
|
-
</PropertyGroup>
|
1597
|
-
</Project>
|
1598
|
-
""",
|
1599
|
-
additionalFilesExpected:
|
1600
|
-
[
|
1601
|
-
("Directory.Packages.props", """
|
1602
|
-
<Project>
|
1603
|
-
<PropertyGroup>
|
1604
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1605
|
-
</PropertyGroup>
|
1606
|
-
|
1607
|
-
<ItemGroup>
|
1608
|
-
<GlobalPackageReference Include="Some.Package" Version="13.0.1" />
|
1609
|
-
</ItemGroup>
|
1610
|
-
</Project>
|
1611
|
-
""")
|
1612
|
-
]
|
1613
|
-
);
|
1614
|
-
}
|
1615
|
-
|
1616
|
-
[Fact]
|
1617
|
-
public async Task UpdatePropertyValue_InDirectoryProps_ForGlobalPackageReference()
|
1618
|
-
{
|
1619
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
1620
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1621
|
-
packages:
|
1622
|
-
[
|
1623
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1624
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1625
|
-
],
|
1626
|
-
// initial
|
1627
|
-
projectContents: """
|
1628
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1629
|
-
<PropertyGroup>
|
1630
|
-
<TargetFramework>net8.0</TargetFramework>
|
1631
|
-
</PropertyGroup>
|
1632
|
-
</Project>
|
1633
|
-
""",
|
1634
|
-
additionalFiles:
|
1635
|
-
[
|
1636
|
-
("Directory.Build.props", "<Project />"),
|
1637
|
-
("Directory.Packages.props", """
|
1638
|
-
<Project>
|
1639
|
-
<PropertyGroup>
|
1640
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1641
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1642
|
-
</PropertyGroup>
|
1643
|
-
|
1644
|
-
<ItemGroup>
|
1645
|
-
<GlobalPackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1646
|
-
</ItemGroup>
|
1647
|
-
</Project>
|
1648
|
-
""")
|
1649
|
-
],
|
1650
|
-
// expected
|
1651
|
-
expectedProjectContents: """
|
1652
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1653
|
-
<PropertyGroup>
|
1654
|
-
<TargetFramework>net8.0</TargetFramework>
|
1655
|
-
</PropertyGroup>
|
1656
|
-
</Project>
|
1657
|
-
""",
|
1658
|
-
additionalFilesExpected:
|
1659
|
-
[
|
1660
|
-
("Directory.Packages.props", """
|
1661
|
-
<Project>
|
1662
|
-
<PropertyGroup>
|
1663
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1664
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1665
|
-
</PropertyGroup>
|
1666
|
-
|
1667
|
-
<ItemGroup>
|
1668
|
-
<GlobalPackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1669
|
-
</ItemGroup>
|
1670
|
-
</Project>
|
1671
|
-
""")
|
1672
|
-
]
|
1673
|
-
);
|
1674
|
-
}
|
1675
|
-
|
1676
|
-
[Fact]
|
1677
|
-
public async Task UpdatePropertyValue_InDirectoryProps_ForPackageReferenceInclude()
|
1678
|
-
{
|
1679
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1680
|
-
packages:
|
1681
|
-
[
|
1682
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1683
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1684
|
-
],
|
1685
|
-
// initial project
|
1686
|
-
projectContents: """
|
1687
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1688
|
-
<PropertyGroup>
|
1689
|
-
<TargetFramework>net8.0</TargetFramework>
|
1690
|
-
</PropertyGroup>
|
1691
|
-
|
1692
|
-
<ItemGroup>
|
1693
|
-
<PackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1694
|
-
</ItemGroup>
|
1695
|
-
</Project>
|
1696
|
-
""",
|
1697
|
-
additionalFiles:
|
1698
|
-
[
|
1699
|
-
// initial props file
|
1700
|
-
("Directory.Build.props", """
|
1701
|
-
<Project>
|
1702
|
-
<PropertyGroup>
|
1703
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1704
|
-
</PropertyGroup>
|
1705
|
-
</Project>
|
1706
|
-
""")
|
1707
|
-
],
|
1708
|
-
// expected project
|
1709
|
-
expectedProjectContents: """
|
1710
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1711
|
-
<PropertyGroup>
|
1712
|
-
<TargetFramework>net8.0</TargetFramework>
|
1713
|
-
</PropertyGroup>
|
1714
|
-
|
1715
|
-
<ItemGroup>
|
1716
|
-
<PackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1717
|
-
</ItemGroup>
|
1718
|
-
</Project>
|
1719
|
-
""",
|
1720
|
-
additionalFilesExpected:
|
1721
|
-
[
|
1722
|
-
// expected props file
|
1723
|
-
("Directory.Build.props", """
|
1724
|
-
<Project>
|
1725
|
-
<PropertyGroup>
|
1726
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1727
|
-
</PropertyGroup>
|
1728
|
-
</Project>
|
1729
|
-
""")
|
1730
|
-
]
|
1731
|
-
);
|
1732
|
-
}
|
1733
|
-
|
1734
|
-
[Fact]
|
1735
|
-
public async Task UpdatePropertyValue_InProps_ForPackageReferenceInclude()
|
1736
|
-
{
|
1737
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1738
|
-
packages:
|
1739
|
-
[
|
1740
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1741
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1742
|
-
],
|
1743
|
-
// initial project
|
1744
|
-
projectContents: """
|
1745
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1746
|
-
<Import Project="my-properties.props" />
|
1747
|
-
|
1748
|
-
<PropertyGroup>
|
1749
|
-
<TargetFramework>net8.0</TargetFramework>
|
1750
|
-
</PropertyGroup>
|
1751
|
-
|
1752
|
-
<ItemGroup>
|
1753
|
-
<PackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1754
|
-
</ItemGroup>
|
1755
|
-
</Project>
|
1756
|
-
""",
|
1757
|
-
additionalFiles:
|
1758
|
-
[
|
1759
|
-
// initial props file
|
1760
|
-
("my-properties.props", """
|
1761
|
-
<Project>
|
1762
|
-
<PropertyGroup>
|
1763
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1764
|
-
</PropertyGroup>
|
1765
|
-
</Project>
|
1766
|
-
""")
|
1767
|
-
],
|
1768
|
-
// expected project
|
1769
|
-
expectedProjectContents: """
|
1770
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1771
|
-
<Import Project="my-properties.props" />
|
1772
|
-
|
1773
|
-
<PropertyGroup>
|
1774
|
-
<TargetFramework>net8.0</TargetFramework>
|
1775
|
-
</PropertyGroup>
|
1776
|
-
|
1777
|
-
<ItemGroup>
|
1778
|
-
<PackageReference Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1779
|
-
</ItemGroup>
|
1780
|
-
</Project>
|
1781
|
-
""",
|
1782
|
-
additionalFilesExpected:
|
1783
|
-
[
|
1784
|
-
// expected props file
|
1785
|
-
("my-properties.props", """
|
1786
|
-
<Project>
|
1787
|
-
<PropertyGroup>
|
1788
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1789
|
-
</PropertyGroup>
|
1790
|
-
</Project>
|
1791
|
-
""")
|
1792
|
-
]
|
1793
|
-
);
|
1794
|
-
}
|
1795
|
-
|
1796
|
-
[Fact]
|
1797
|
-
public async Task UpdatePropertyValue_InProps_ForPackageVersion()
|
1798
|
-
{
|
1799
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
1800
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1801
|
-
packages:
|
1802
|
-
[
|
1803
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1804
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1805
|
-
],
|
1806
|
-
// initial
|
1807
|
-
projectContents: """
|
1808
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1809
|
-
<PropertyGroup>
|
1810
|
-
<TargetFramework>net8.0</TargetFramework>
|
1811
|
-
</PropertyGroup>
|
1812
|
-
|
1813
|
-
<ItemGroup>
|
1814
|
-
<PackageReference Include="Some.Package" />
|
1815
|
-
</ItemGroup>
|
1816
|
-
</Project>
|
1817
|
-
""",
|
1818
|
-
additionalFiles:
|
1819
|
-
[
|
1820
|
-
("Directory.Build.props", "<Project />"),
|
1821
|
-
// initial props files
|
1822
|
-
("Directory.Packages.props", """
|
1823
|
-
<Project>
|
1824
|
-
<Import Project="Version.props" />
|
1825
|
-
<PropertyGroup>
|
1826
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1827
|
-
</PropertyGroup>
|
1828
|
-
|
1829
|
-
<ItemGroup>
|
1830
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1831
|
-
</ItemGroup>
|
1832
|
-
</Project>
|
1833
|
-
"""),
|
1834
|
-
("Version.props", """
|
1835
|
-
<Project>
|
1836
|
-
<PropertyGroup>
|
1837
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
1838
|
-
</PropertyGroup>
|
1839
|
-
</Project>
|
1840
|
-
""")
|
1841
|
-
],
|
1842
|
-
// expected
|
1843
|
-
expectedProjectContents: """
|
1844
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1845
|
-
<PropertyGroup>
|
1846
|
-
<TargetFramework>net8.0</TargetFramework>
|
1847
|
-
</PropertyGroup>
|
1848
|
-
|
1849
|
-
<ItemGroup>
|
1850
|
-
<PackageReference Include="Some.Package" />
|
1851
|
-
</ItemGroup>
|
1852
|
-
</Project>
|
1853
|
-
""",
|
1854
|
-
additionalFilesExpected:
|
1855
|
-
[
|
1856
|
-
// expected props files
|
1857
|
-
("Directory.Packages.props", """
|
1858
|
-
<Project>
|
1859
|
-
<Import Project="Version.props" />
|
1860
|
-
<PropertyGroup>
|
1861
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1862
|
-
</PropertyGroup>
|
1863
|
-
|
1864
|
-
<ItemGroup>
|
1865
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1866
|
-
</ItemGroup>
|
1867
|
-
</Project>
|
1868
|
-
"""),
|
1869
|
-
("Version.props", """
|
1870
|
-
<Project>
|
1871
|
-
<PropertyGroup>
|
1872
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
1873
|
-
</PropertyGroup>
|
1874
|
-
</Project>
|
1875
|
-
""")
|
1876
|
-
]
|
1877
|
-
);
|
1878
|
-
}
|
1879
|
-
|
1880
|
-
[Fact]
|
1881
|
-
public async Task UpdatePropertyValue_InProps_ThenSubstituted_ForPackageVersion()
|
1882
|
-
{
|
1883
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
1884
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1885
|
-
packages:
|
1886
|
-
[
|
1887
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1888
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1889
|
-
],
|
1890
|
-
// initial
|
1891
|
-
projectContents: """
|
1892
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1893
|
-
<PropertyGroup>
|
1894
|
-
<TargetFramework>net8.0</TargetFramework>
|
1895
|
-
</PropertyGroup>
|
1896
|
-
|
1897
|
-
<ItemGroup>
|
1898
|
-
<PackageReference Include="Some.Package" />
|
1899
|
-
</ItemGroup>
|
1900
|
-
</Project>
|
1901
|
-
""",
|
1902
|
-
additionalFiles:
|
1903
|
-
[
|
1904
|
-
("Directory.Build.props", "<Project />"),
|
1905
|
-
// initial props files
|
1906
|
-
("Directory.Packages.props", """
|
1907
|
-
<Project>
|
1908
|
-
<Import Project="Version.props" />
|
1909
|
-
<PropertyGroup>
|
1910
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1911
|
-
<SomePackagePackageVersion>$(NewtonsoftJsonVersion)</SomePackagePackageVersion>
|
1912
|
-
</PropertyGroup>
|
1913
|
-
|
1914
|
-
<ItemGroup>
|
1915
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1916
|
-
</ItemGroup>
|
1917
|
-
</Project>
|
1918
|
-
"""),
|
1919
|
-
("Version.props", """
|
1920
|
-
<Project>
|
1921
|
-
<PropertyGroup>
|
1922
|
-
<NewtonsoftJsonVersion>9.0.1</NewtonsoftJsonVersion>
|
1923
|
-
</PropertyGroup>
|
1924
|
-
</Project>
|
1925
|
-
""")
|
1926
|
-
],
|
1927
|
-
// expected
|
1928
|
-
expectedProjectContents: """
|
1929
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1930
|
-
<PropertyGroup>
|
1931
|
-
<TargetFramework>net8.0</TargetFramework>
|
1932
|
-
</PropertyGroup>
|
1933
|
-
|
1934
|
-
<ItemGroup>
|
1935
|
-
<PackageReference Include="Some.Package" />
|
1936
|
-
</ItemGroup>
|
1937
|
-
</Project>
|
1938
|
-
""",
|
1939
|
-
additionalFilesExpected:
|
1940
|
-
[
|
1941
|
-
// expected props files
|
1942
|
-
("Directory.Packages.props", """
|
1943
|
-
<Project>
|
1944
|
-
<Import Project="Version.props" />
|
1945
|
-
<PropertyGroup>
|
1946
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1947
|
-
<SomePackagePackageVersion>$(NewtonsoftJsonVersion)</SomePackagePackageVersion>
|
1948
|
-
</PropertyGroup>
|
1949
|
-
|
1950
|
-
<ItemGroup>
|
1951
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
1952
|
-
</ItemGroup>
|
1953
|
-
</Project>
|
1954
|
-
"""),
|
1955
|
-
("Version.props", """
|
1956
|
-
<Project>
|
1957
|
-
<PropertyGroup>
|
1958
|
-
<NewtonsoftJsonVersion>13.0.1</NewtonsoftJsonVersion>
|
1959
|
-
</PropertyGroup>
|
1960
|
-
</Project>
|
1961
|
-
""")
|
1962
|
-
]
|
1963
|
-
);
|
1964
|
-
}
|
1965
|
-
|
1966
|
-
[Fact]
|
1967
|
-
public async Task UpdatePropertyValues_InProps_ThenRedefinedAndSubstituted_ForPackageVersion()
|
1968
|
-
{
|
1969
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
1970
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
1971
|
-
packages:
|
1972
|
-
[
|
1973
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "net8.0"),
|
1974
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
1975
|
-
],
|
1976
|
-
// initial
|
1977
|
-
projectContents: """
|
1978
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
1979
|
-
<PropertyGroup>
|
1980
|
-
<TargetFramework>net8.0</TargetFramework>
|
1981
|
-
</PropertyGroup>
|
1982
|
-
|
1983
|
-
<ItemGroup>
|
1984
|
-
<PackageReference Include="Some.Package" />
|
1985
|
-
</ItemGroup>
|
1986
|
-
</Project>
|
1987
|
-
""",
|
1988
|
-
additionalFiles:
|
1989
|
-
[
|
1990
|
-
("Directory.Build.props", "<Project />"),
|
1991
|
-
// initial props files
|
1992
|
-
("Directory.Packages.props", """
|
1993
|
-
<Project>
|
1994
|
-
<Import Project="Version.props" />
|
1995
|
-
<PropertyGroup>
|
1996
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
1997
|
-
<SomePackagePackageVersion>$(SomePackageVersion)</SomePackagePackageVersion>
|
1998
|
-
</PropertyGroup>
|
1999
|
-
|
2000
|
-
<ItemGroup>
|
2001
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
2002
|
-
</ItemGroup>
|
2003
|
-
</Project>
|
2004
|
-
"""),
|
2005
|
-
("Version.props", """
|
2006
|
-
<Project>
|
2007
|
-
<PropertyGroup>
|
2008
|
-
<SomePACKAGEVersion>9.0.1</SomePACKAGEVersion>
|
2009
|
-
<SomePackagePackageVersion>9.0.1</SomePackagePackageVersion>
|
2010
|
-
</PropertyGroup>
|
2011
|
-
</Project>
|
2012
|
-
""")
|
2013
|
-
],
|
2014
|
-
// expected
|
2015
|
-
expectedProjectContents: """
|
2016
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2017
|
-
<PropertyGroup>
|
2018
|
-
<TargetFramework>net8.0</TargetFramework>
|
2019
|
-
</PropertyGroup>
|
2020
|
-
|
2021
|
-
<ItemGroup>
|
2022
|
-
<PackageReference Include="Some.Package" />
|
2023
|
-
</ItemGroup>
|
2024
|
-
</Project>
|
2025
|
-
""",
|
2026
|
-
additionalFilesExpected:
|
2027
|
-
[
|
2028
|
-
// expected props files
|
2029
|
-
("Directory.Packages.props", """
|
2030
|
-
<Project>
|
2031
|
-
<Import Project="Version.props" />
|
2032
|
-
<PropertyGroup>
|
2033
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2034
|
-
<SomePackagePackageVersion>$(SomePackageVersion)</SomePackagePackageVersion>
|
2035
|
-
</PropertyGroup>
|
2036
|
-
|
2037
|
-
<ItemGroup>
|
2038
|
-
<PackageVersion Include="Some.Package" Version="$(SomePackagePackageVersion)" />
|
2039
|
-
</ItemGroup>
|
2040
|
-
</Project>
|
2041
|
-
"""),
|
2042
|
-
("Version.props", """
|
2043
|
-
<Project>
|
2044
|
-
<PropertyGroup>
|
2045
|
-
<SomePACKAGEVersion>13.0.1</SomePACKAGEVersion>
|
2046
|
-
<SomePackagePackageVersion>13.0.1</SomePackagePackageVersion>
|
2047
|
-
</PropertyGroup>
|
2048
|
-
</Project>
|
2049
|
-
""")
|
2050
|
-
]
|
2051
|
-
);
|
2052
|
-
}
|
2053
|
-
|
2054
|
-
[Fact]
|
2055
|
-
public async Task UpdatePeerDependencyWithInlineVersion()
|
2056
|
-
{
|
2057
|
-
await TestUpdateForProject("Some.Package", "2.2.0", "7.0.0",
|
2058
|
-
packages:
|
2059
|
-
[
|
2060
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.2.0", "net8.0", [(null, [("Peer.Package", "2.2.0")])]),
|
2061
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.0", "net8.0", [(null, [("Peer.Package", "7.0.0")])]),
|
2062
|
-
MockNuGetPackage.CreateSimplePackage("Peer.Package", "2.2.0", "net8.0"),
|
2063
|
-
MockNuGetPackage.CreateSimplePackage("Peer.Package", "7.0.0", "net8.0"),
|
2064
|
-
],
|
2065
|
-
projectContents: """
|
2066
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2067
|
-
<PropertyGroup>
|
2068
|
-
<TargetFramework>net8.0</TargetFramework>
|
2069
|
-
</PropertyGroup>
|
2070
|
-
<ItemGroup>
|
2071
|
-
<PackageReference Include="Some.Package" Version="2.2.0" />
|
2072
|
-
<PackageReference Include="Peer.Package" Version="2.2.0" />
|
2073
|
-
</ItemGroup>
|
2074
|
-
</Project>
|
2075
|
-
""",
|
2076
|
-
expectedProjectContents: """
|
2077
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2078
|
-
<PropertyGroup>
|
2079
|
-
<TargetFramework>net8.0</TargetFramework>
|
2080
|
-
</PropertyGroup>
|
2081
|
-
<ItemGroup>
|
2082
|
-
<PackageReference Include="Some.Package" Version="7.0.0" />
|
2083
|
-
<PackageReference Include="Peer.Package" Version="7.0.0" />
|
2084
|
-
</ItemGroup>
|
2085
|
-
</Project>
|
2086
|
-
"""
|
2087
|
-
);
|
2088
|
-
}
|
2089
|
-
|
2090
|
-
[Fact]
|
2091
|
-
public async Task UpdatePeerDependencyFromPropertyInSameFile()
|
2092
|
-
{
|
2093
|
-
await TestUpdateForProject("Some.Package", "2.2.0", "7.0.0",
|
2094
|
-
packages:
|
2095
|
-
[
|
2096
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.2.0", "net8.0", [(null, [("Peer.Package", "2.2.0")])]),
|
2097
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.0", "net8.0", [(null, [("Peer.Package", "7.0.0")])]),
|
2098
|
-
MockNuGetPackage.CreateSimplePackage("Peer.Package", "2.2.0", "net8.0"),
|
2099
|
-
MockNuGetPackage.CreateSimplePackage("Peer.Package", "7.0.0", "net8.0"),
|
2100
|
-
],
|
2101
|
-
projectContents: """
|
2102
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2103
|
-
<PropertyGroup>
|
2104
|
-
<TargetFramework>net8.0</TargetFramework>
|
2105
|
-
<SomePackageVersion>2.2.0</SomePackageVersion>
|
2106
|
-
<PeerPackageVersion>2.2.0</PeerPackageVersion>
|
2107
|
-
</PropertyGroup>
|
2108
|
-
<ItemGroup>
|
2109
|
-
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
2110
|
-
<PackageReference Include="Peer.Package" Version="$(PeerPackageVersion)" />
|
2111
|
-
</ItemGroup>
|
2112
|
-
</Project>
|
2113
|
-
""",
|
2114
|
-
expectedProjectContents: """
|
2115
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2116
|
-
<PropertyGroup>
|
2117
|
-
<TargetFramework>net8.0</TargetFramework>
|
2118
|
-
<SomePackageVersion>7.0.0</SomePackageVersion>
|
2119
|
-
<PeerPackageVersion>7.0.0</PeerPackageVersion>
|
2120
|
-
</PropertyGroup>
|
2121
|
-
<ItemGroup>
|
2122
|
-
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
2123
|
-
<PackageReference Include="Peer.Package" Version="$(PeerPackageVersion)" />
|
2124
|
-
</ItemGroup>
|
2125
|
-
</Project>
|
2126
|
-
"""
|
2127
|
-
);
|
2128
|
-
}
|
2129
|
-
|
2130
|
-
[Fact]
|
2131
|
-
public async Task UpdatePeerDependencyFromPropertyInDifferentFile()
|
2132
|
-
{
|
2133
|
-
await TestUpdateForProject("Some.Package", "2.2.0", "7.0.0",
|
2134
|
-
packages:
|
2135
|
-
[
|
2136
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.2.0", "net8.0", [(null, [("Peer.Package", "2.2.0")])]),
|
2137
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.0", "net8.0", [(null, [("Peer.Package", "7.0.0")])]),
|
2138
|
-
MockNuGetPackage.CreateSimplePackage("Peer.Package", "2.2.0", "net8.0"),
|
2139
|
-
MockNuGetPackage.CreateSimplePackage("Peer.Package", "7.0.0", "net8.0"),
|
2140
|
-
],
|
2141
|
-
projectContents: """
|
2142
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2143
|
-
<Import Project="Versions.props" />
|
2144
|
-
<PropertyGroup>
|
2145
|
-
<TargetFramework>net8.0</TargetFramework>
|
2146
|
-
</PropertyGroup>
|
2147
|
-
<ItemGroup>
|
2148
|
-
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
2149
|
-
<PackageReference Include="Peer.Package" Version="$(PeerPackageVersion)" />
|
2150
|
-
</ItemGroup>
|
2151
|
-
</Project>
|
2152
|
-
""",
|
2153
|
-
additionalFiles:
|
2154
|
-
[
|
2155
|
-
("Versions.props", """
|
2156
|
-
<Project>
|
2157
|
-
<PropertyGroup>
|
2158
|
-
<SomePackageVersion>2.2.0</SomePackageVersion>
|
2159
|
-
<PeerPackageVersion>2.2.0</PeerPackageVersion>
|
2160
|
-
</PropertyGroup>
|
2161
|
-
</Project>
|
2162
|
-
""")
|
2163
|
-
],
|
2164
|
-
expectedProjectContents: """
|
2165
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2166
|
-
<Import Project="Versions.props" />
|
2167
|
-
<PropertyGroup>
|
2168
|
-
<TargetFramework>net8.0</TargetFramework>
|
2169
|
-
</PropertyGroup>
|
2170
|
-
<ItemGroup>
|
2171
|
-
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
2172
|
-
<PackageReference Include="Peer.Package" Version="$(PeerPackageVersion)" />
|
2173
|
-
</ItemGroup>
|
2174
|
-
</Project>
|
2175
|
-
""",
|
2176
|
-
additionalFilesExpected:
|
2177
|
-
[
|
2178
|
-
("Versions.props", """
|
2179
|
-
<Project>
|
2180
|
-
<PropertyGroup>
|
2181
|
-
<SomePackageVersion>7.0.0</SomePackageVersion>
|
2182
|
-
<PeerPackageVersion>7.0.0</PeerPackageVersion>
|
2183
|
-
</PropertyGroup>
|
2184
|
-
</Project>
|
2185
|
-
""")
|
2186
|
-
]
|
2187
|
-
);
|
2188
|
-
}
|
2189
|
-
|
2190
|
-
[Fact]
|
2191
|
-
public async Task UpdatePeerDependencyWithInlineVersionAndMultipleTfms()
|
2192
|
-
{
|
2193
|
-
await TestUpdateForProject("Some.Package", "2.2.0", "7.0.0",
|
2194
|
-
packages:
|
2195
|
-
[
|
2196
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.2.0", "net7.0", [(null, [("Peer.Package", "2.2.0")])]),
|
2197
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.0", "net7.0", [(null, [("Peer.Package", "7.0.0")])]),
|
2198
|
-
MockNuGetPackage.CreateSimplePackage("Peer.Package", "2.2.0", "net7.0"),
|
2199
|
-
MockNuGetPackage.CreateSimplePackage("Peer.Package", "7.0.0", "net7.0"),
|
2200
|
-
],
|
2201
|
-
projectContents: """
|
2202
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2203
|
-
<PropertyGroup>
|
2204
|
-
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
|
2205
|
-
</PropertyGroup>
|
2206
|
-
<ItemGroup>
|
2207
|
-
<PackageReference Include="Some.Package" Version="2.2.0" />
|
2208
|
-
<PackageReference Include="Peer.Package" Version="2.2.0" />
|
2209
|
-
</ItemGroup>
|
2210
|
-
</Project>
|
2211
|
-
""",
|
2212
|
-
expectedProjectContents: """
|
2213
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2214
|
-
<PropertyGroup>
|
2215
|
-
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
|
2216
|
-
</PropertyGroup>
|
2217
|
-
<ItemGroup>
|
2218
|
-
<PackageReference Include="Some.Package" Version="7.0.0" />
|
2219
|
-
<PackageReference Include="Peer.Package" Version="7.0.0" />
|
2220
|
-
</ItemGroup>
|
2221
|
-
</Project>
|
2222
|
-
"""
|
2223
|
-
);
|
2224
|
-
}
|
2225
|
-
|
2226
|
-
[Fact]
|
2227
|
-
public async Task NoUpdateForPeerDependenciesWhichAreHigherVersion()
|
2228
|
-
{
|
2229
|
-
await TestUpdateForProject("Some.Package", "1.0.0", "1.1.0",
|
2230
|
-
packages:
|
2231
|
-
[
|
2232
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0", [(null, [("Transitive.Dependency", "1.0.0")])]),
|
2233
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.1.0", "net8.0", [(null, [("Transitive.Dependency", "1.0.0")])]),
|
2234
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Dependency", "1.0.0", "net8.0"),
|
2235
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Dependency", "1.1.0", "net8.0"), // we shouldn't update to this
|
2236
|
-
],
|
2237
|
-
projectContents: """
|
2238
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2239
|
-
<PropertyGroup>
|
2240
|
-
<TargetFramework>net8.0</TargetFramework>
|
2241
|
-
</PropertyGroup>
|
2242
|
-
<ItemGroup>
|
2243
|
-
<PackageReference Include="Some.Package" />
|
2244
|
-
<PackageReference Include="Transitive.Dependency" />
|
2245
|
-
</ItemGroup>
|
2246
|
-
</Project>
|
2247
|
-
""",
|
2248
|
-
additionalFiles:
|
2249
|
-
[
|
2250
|
-
("Directory.Build.props", "<Project />"),
|
2251
|
-
("Directory.Packages.props", """
|
2252
|
-
<Project>
|
2253
|
-
<PropertyGroup>
|
2254
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2255
|
-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2256
|
-
</PropertyGroup>
|
2257
|
-
<ItemGroup>
|
2258
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
2259
|
-
<PackageVersion Include="Transitive.Dependency" Version="1.0.0" />
|
2260
|
-
</ItemGroup>
|
2261
|
-
</Project>
|
2262
|
-
""")
|
2263
|
-
],
|
2264
|
-
expectedProjectContents: """
|
2265
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2266
|
-
<PropertyGroup>
|
2267
|
-
<TargetFramework>net8.0</TargetFramework>
|
2268
|
-
</PropertyGroup>
|
2269
|
-
<ItemGroup>
|
2270
|
-
<PackageReference Include="Some.Package" />
|
2271
|
-
<PackageReference Include="Transitive.Dependency" />
|
2272
|
-
</ItemGroup>
|
2273
|
-
</Project>
|
2274
|
-
""",
|
2275
|
-
additionalFilesExpected:
|
2276
|
-
[
|
2277
|
-
("Directory.Packages.props", """
|
2278
|
-
<Project>
|
2279
|
-
<PropertyGroup>
|
2280
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2281
|
-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2282
|
-
</PropertyGroup>
|
2283
|
-
<ItemGroup>
|
2284
|
-
<PackageVersion Include="Some.Package" Version="1.1.0" />
|
2285
|
-
<PackageVersion Include="Transitive.Dependency" Version="1.0.0" />
|
2286
|
-
</ItemGroup>
|
2287
|
-
</Project>
|
2288
|
-
""")
|
2289
|
-
]
|
2290
|
-
);
|
2291
|
-
}
|
2292
|
-
|
2293
|
-
[Fact]
|
2294
|
-
public async Task UpdatingToNotCompatiblePackageDoesNothing()
|
2295
|
-
{
|
2296
|
-
// can't upgrade to the newer package because of a TFM mismatch
|
2297
|
-
await TestNoChangeforProject("Some.Package", "7.0.0", "8.0.0",
|
2298
|
-
packages:
|
2299
|
-
[
|
2300
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.0", "net7.0"),
|
2301
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "8.0.0", "net8.0"),
|
2302
|
-
],
|
2303
|
-
projectContents: """
|
2304
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2305
|
-
<PropertyGroup>
|
2306
|
-
<TargetFramework>net7.0</TargetFramework>
|
2307
|
-
</PropertyGroup>
|
2308
|
-
<ItemGroup>
|
2309
|
-
<PackageReference Include="Some.Package" Version="7.0.0" />
|
2310
|
-
</ItemGroup>
|
2311
|
-
</Project>
|
2312
|
-
"""
|
2313
|
-
);
|
2314
|
-
}
|
2315
|
-
|
2316
|
-
[Fact]
|
2317
|
-
public async Task UpdatingToNotCompatiblePackageDoesNothingWithSingleOfMultileTfmNotSupported()
|
2318
|
-
{
|
2319
|
-
// can't upgrade to the newer package because one of the TFMs doesn't match
|
2320
|
-
await TestNoChangeforProject("Some.Package", "7.0.0", "8.0.0",
|
2321
|
-
packages:
|
2322
|
-
[
|
2323
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.0", "net7.0"),
|
2324
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "8.0.0", "net8.0"),
|
2325
|
-
],
|
2326
|
-
projectContents: """
|
2327
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2328
|
-
<PropertyGroup>
|
2329
|
-
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
|
2330
|
-
</PropertyGroup>
|
2331
|
-
<ItemGroup>
|
2332
|
-
<PackageReference Include="Some.Package" Version="7.0.0" />
|
2333
|
-
</ItemGroup>
|
2334
|
-
</Project>
|
2335
|
-
"""
|
2336
|
-
);
|
2337
|
-
}
|
2338
|
-
|
2339
|
-
[Fact]
|
2340
|
-
public async Task UpdateVersionAttribute_InProjectFile_WhereTargetFrameworksIsSelfReferential()
|
2341
|
-
{
|
2342
|
-
// update Some.Package from 9.0.1 to 13.0.1
|
2343
|
-
await TestUpdateForProject("Some.Package", "9.0.1", "13.0.1",
|
2344
|
-
packages:
|
2345
|
-
[
|
2346
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "9.0.1", "netstandard2.0"),
|
2347
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "netstandard2.0"),
|
2348
|
-
],
|
2349
|
-
projectContents: """
|
2350
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2351
|
-
<PropertyGroup>
|
2352
|
-
<TargetFrameworks Condition="!$(TargetFrameworks.Contains('net472'))">$(TargetFrameworks);net472</TargetFrameworks>
|
2353
|
-
<TargetFrameworks Condition="!$(TargetFrameworks.Contains('net8.0'))">$(TargetFrameworks);net8.0</TargetFrameworks>
|
2354
|
-
</PropertyGroup>
|
2355
|
-
<ItemGroup>
|
2356
|
-
<PackageReference Include="Some.Package" Version="9.0.1" />
|
2357
|
-
</ItemGroup>
|
2358
|
-
</Project>
|
2359
|
-
""",
|
2360
|
-
expectedProjectContents: """
|
2361
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2362
|
-
<PropertyGroup>
|
2363
|
-
<TargetFrameworks Condition="!$(TargetFrameworks.Contains('net472'))">$(TargetFrameworks);net472</TargetFrameworks>
|
2364
|
-
<TargetFrameworks Condition="!$(TargetFrameworks.Contains('net8.0'))">$(TargetFrameworks);net8.0</TargetFrameworks>
|
2365
|
-
</PropertyGroup>
|
2366
|
-
<ItemGroup>
|
2367
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
2368
|
-
</ItemGroup>
|
2369
|
-
</Project>
|
2370
|
-
"""
|
2371
|
-
);
|
2372
|
-
}
|
2373
|
-
|
2374
|
-
[Fact]
|
2375
|
-
public async Task UpdateOfNonExistantPackageDoesNothingEvenIfTransitiveDependencyIsPresent()
|
2376
|
-
{
|
2377
|
-
// package Some.Package isn't in the project, but one of its transitive dependencies is
|
2378
|
-
await TestNoChangeforProject("Some.Package", "2.2.0", "7.0.0",
|
2379
|
-
packages:
|
2380
|
-
[
|
2381
|
-
// these packages exist in the feed, but aren't used
|
2382
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.2.0", "net8.0", [(null, [("Transitive.Dependency", "2.2.0")])]),
|
2383
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.0", "net8.0", [(null, [("Transitive.Dependency", "7.0.0")])]),
|
2384
|
-
// one of these is used, but we can't update to it
|
2385
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Dependency", "2.2.0", "net8.0"),
|
2386
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Dependency", "7.0.0", "net8.0"),
|
2387
|
-
],
|
2388
|
-
projectContents: """
|
2389
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2390
|
-
<PropertyGroup>
|
2391
|
-
<TargetFramework>net8.0</TargetFramework>
|
2392
|
-
</PropertyGroup>
|
2393
|
-
<ItemGroup>
|
2394
|
-
<PackageReference Include="Transitive.Dependency" Version="2.2.0" />
|
2395
|
-
</ItemGroup>
|
2396
|
-
</Project>
|
2397
|
-
"""
|
2398
|
-
);
|
2399
|
-
}
|
2400
|
-
|
2401
|
-
[Fact]
|
2402
|
-
public async Task AvoidPackageDowngradeWhenUpdatingDependency()
|
2403
|
-
{
|
2404
|
-
// updating from 1.0.0 to 1.1.0 of Some.Package should not cause a downgrade warning of Some.Dependency; it
|
2405
|
-
// should be pulled along, even when the TFM is pulled from a different file. unrelated packages are ignored
|
2406
|
-
await TestUpdateForProject("Some.Package", "1.0.0", "1.1.0",
|
2407
|
-
packages:
|
2408
|
-
[
|
2409
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0", [(null, [("Some.Dependency", "1.0.0")])]),
|
2410
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.1.0", "net8.0", [(null, [("Some.Dependency", "1.1.0")])]),
|
2411
|
-
MockNuGetPackage.CreateSimplePackage("Some.Dependency", "1.0.0", "net8.0"),
|
2412
|
-
MockNuGetPackage.CreateSimplePackage("Some.Dependency", "1.1.0", "net8.0"),
|
2413
|
-
MockNuGetPackage.CreateSimplePackage("Unrelated.Package", "1.0.0", "net8.0"),
|
2414
|
-
MockNuGetPackage.CreateSimplePackage("Unrelated.Package", "1.1.0", "net8.0"),
|
2415
|
-
],
|
2416
|
-
projectContents: """
|
2417
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2418
|
-
|
2419
|
-
<PropertyGroup>
|
2420
|
-
<TargetFramework>$(PreferredTargetFramework)</TargetFramework>
|
2421
|
-
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
2422
|
-
<RootNamespace />
|
2423
|
-
</PropertyGroup>
|
2424
|
-
|
2425
|
-
<ItemGroup>
|
2426
|
-
<PackageReference Include="Some.Package" />
|
2427
|
-
<PackageReference Include="Some.Dependency" />
|
2428
|
-
<PackageReference Include="Unrelated.Package" />
|
2429
|
-
</ItemGroup>
|
2430
|
-
|
2431
|
-
</Project>
|
2432
|
-
""",
|
2433
|
-
additionalFiles:
|
2434
|
-
[
|
2435
|
-
("Directory.Packages.props", """
|
2436
|
-
<Project>
|
2437
|
-
<PropertyGroup>
|
2438
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2439
|
-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2440
|
-
</PropertyGroup>
|
2441
|
-
<ItemGroup>
|
2442
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
2443
|
-
<PackageVersion Include="Some.Dependency" Version="1.0.0" />
|
2444
|
-
<PackageVersion Include="Unrelated.Package" Version="1.0.0" />
|
2445
|
-
</ItemGroup>
|
2446
|
-
</Project>
|
2447
|
-
"""),
|
2448
|
-
("Directory.Build.props", """
|
2449
|
-
<Project>
|
2450
|
-
<PropertyGroup>
|
2451
|
-
<PreferredTargetFramework>net8.0</PreferredTargetFramework>
|
2452
|
-
</PropertyGroup>
|
2453
|
-
</Project>
|
2454
|
-
""")
|
2455
|
-
],
|
2456
|
-
expectedProjectContents: """
|
2457
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2458
|
-
|
2459
|
-
<PropertyGroup>
|
2460
|
-
<TargetFramework>$(PreferredTargetFramework)</TargetFramework>
|
2461
|
-
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
2462
|
-
<RootNamespace />
|
2463
|
-
</PropertyGroup>
|
2464
|
-
|
2465
|
-
<ItemGroup>
|
2466
|
-
<PackageReference Include="Some.Package" />
|
2467
|
-
<PackageReference Include="Some.Dependency" />
|
2468
|
-
<PackageReference Include="Unrelated.Package" />
|
2469
|
-
</ItemGroup>
|
2470
|
-
|
2471
|
-
</Project>
|
2472
|
-
""",
|
2473
|
-
additionalFilesExpected:
|
2474
|
-
[
|
2475
|
-
("Directory.Packages.props", """
|
2476
|
-
<Project>
|
2477
|
-
<PropertyGroup>
|
2478
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2479
|
-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2480
|
-
</PropertyGroup>
|
2481
|
-
<ItemGroup>
|
2482
|
-
<PackageVersion Include="Some.Package" Version="1.1.0" />
|
2483
|
-
<PackageVersion Include="Some.Dependency" Version="1.1.0" />
|
2484
|
-
<PackageVersion Include="Unrelated.Package" Version="1.0.0" />
|
2485
|
-
</ItemGroup>
|
2486
|
-
</Project>
|
2487
|
-
"""),
|
2488
|
-
("Directory.Build.props", """
|
2489
|
-
<Project>
|
2490
|
-
<PropertyGroup>
|
2491
|
-
<PreferredTargetFramework>net8.0</PreferredTargetFramework>
|
2492
|
-
</PropertyGroup>
|
2493
|
-
</Project>
|
2494
|
-
""")
|
2495
|
-
]
|
2496
|
-
);
|
2497
|
-
}
|
2498
|
-
|
2499
|
-
[Fact]
|
2500
|
-
public async Task AddTransitiveDependencyByAddingPackageReferenceAndVersion()
|
2501
|
-
{
|
2502
|
-
await TestUpdateForProject("Some.Transitive.Dependency", "5.0.0", "5.0.2", isTransitive: true,
|
2503
|
-
packages:
|
2504
|
-
[
|
2505
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "3.1.3", "net8.0", [(null, [("Some.Transitive.Dependency", "5.0.0")])]),
|
2506
|
-
MockNuGetPackage.CreateSimplePackage("Some.Transitive.Dependency", "5.0.0", "net8.0"),
|
2507
|
-
MockNuGetPackage.CreateSimplePackage("Some.Transitive.Dependency", "5.0.2", "net8.0"),
|
2508
|
-
],
|
2509
|
-
// initial
|
2510
|
-
projectContents: """
|
2511
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2512
|
-
|
2513
|
-
<PropertyGroup>
|
2514
|
-
<TargetFramework>net8.0</TargetFramework>
|
2515
|
-
</PropertyGroup>
|
2516
|
-
|
2517
|
-
<ItemGroup>
|
2518
|
-
<PackageReference Include="Some.Package" />
|
2519
|
-
</ItemGroup>
|
2520
|
-
|
2521
|
-
</Project>
|
2522
|
-
""",
|
2523
|
-
additionalFiles:
|
2524
|
-
[
|
2525
|
-
("Directory.Build.props", "<Project />"),
|
2526
|
-
// initial props files
|
2527
|
-
("Directory.Packages.props", """
|
2528
|
-
<Project>
|
2529
|
-
<PropertyGroup>
|
2530
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2531
|
-
</PropertyGroup>
|
2532
|
-
<ItemGroup>
|
2533
|
-
<PackageVersion Include="Some.Package" Version="3.1.3" />
|
2534
|
-
</ItemGroup>
|
2535
|
-
</Project>
|
2536
|
-
""")
|
2537
|
-
],
|
2538
|
-
// expected
|
2539
|
-
expectedProjectContents: """
|
2540
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2541
|
-
|
2542
|
-
<PropertyGroup>
|
2543
|
-
<TargetFramework>net8.0</TargetFramework>
|
2544
|
-
</PropertyGroup>
|
2545
|
-
|
2546
|
-
<ItemGroup>
|
2547
|
-
<PackageReference Include="Some.Package" />
|
2548
|
-
<PackageReference Include="Some.Transitive.Dependency" />
|
2549
|
-
</ItemGroup>
|
2550
|
-
|
2551
|
-
</Project>
|
2552
|
-
""",
|
2553
|
-
additionalFilesExpected:
|
2554
|
-
[
|
2555
|
-
// expected props files
|
2556
|
-
("Directory.Packages.props", """
|
2557
|
-
<Project>
|
2558
|
-
<PropertyGroup>
|
2559
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2560
|
-
</PropertyGroup>
|
2561
|
-
<ItemGroup>
|
2562
|
-
<PackageVersion Include="Some.Package" Version="3.1.3" />
|
2563
|
-
<PackageVersion Include="Some.Transitive.Dependency" Version="5.0.2" />
|
2564
|
-
</ItemGroup>
|
2565
|
-
</Project>
|
2566
|
-
""")
|
2567
|
-
]
|
2568
|
-
);
|
2569
|
-
}
|
2570
|
-
|
2571
|
-
[Fact]
|
2572
|
-
public async Task PinTransitiveDependencyByAddingPackageVersion()
|
2573
|
-
{
|
2574
|
-
await TestUpdateForProject("Some.Transitive.Dependency", "5.0.0", "5.0.2", isTransitive: true,
|
2575
|
-
packages:
|
2576
|
-
[
|
2577
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "3.1.3", "net8.0", [(null, [("Some.Transitive.Dependency", "5.0.0")])]),
|
2578
|
-
MockNuGetPackage.CreateSimplePackage("Some.Transitive.Dependency", "5.0.0", "net8.0"),
|
2579
|
-
MockNuGetPackage.CreateSimplePackage("Some.Transitive.Dependency", "5.0.2", "net8.0"),
|
2580
|
-
],
|
2581
|
-
// initial
|
2582
|
-
projectContents: """
|
2583
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2584
|
-
|
2585
|
-
<PropertyGroup>
|
2586
|
-
<NoWarn>$(NoWarn);NETSDK1138</NoWarn>
|
2587
|
-
<TargetFramework>net8.0</TargetFramework>
|
2588
|
-
</PropertyGroup>
|
2589
|
-
|
2590
|
-
<ItemGroup>
|
2591
|
-
<PackageReference Include="Some.Package" />
|
2592
|
-
</ItemGroup>
|
2593
|
-
|
2594
|
-
</Project>
|
2595
|
-
""",
|
2596
|
-
additionalFiles:
|
2597
|
-
[
|
2598
|
-
("Directory.Build.props", "<Project />"),
|
2599
|
-
// initial props files
|
2600
|
-
("Directory.Packages.props", """
|
2601
|
-
<Project>
|
2602
|
-
<PropertyGroup>
|
2603
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2604
|
-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2605
|
-
</PropertyGroup>
|
2606
|
-
<ItemGroup>
|
2607
|
-
<PackageVersion Include="Some.Package" Version="3.1.3" />
|
2608
|
-
</ItemGroup>
|
2609
|
-
</Project>
|
2610
|
-
""")
|
2611
|
-
],
|
2612
|
-
// expected
|
2613
|
-
expectedProjectContents: """
|
2614
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2615
|
-
|
2616
|
-
<PropertyGroup>
|
2617
|
-
<NoWarn>$(NoWarn);NETSDK1138</NoWarn>
|
2618
|
-
<TargetFramework>net8.0</TargetFramework>
|
2619
|
-
</PropertyGroup>
|
2620
|
-
|
2621
|
-
<ItemGroup>
|
2622
|
-
<PackageReference Include="Some.Package" />
|
2623
|
-
</ItemGroup>
|
2624
|
-
|
2625
|
-
</Project>
|
2626
|
-
""",
|
2627
|
-
additionalFilesExpected:
|
2628
|
-
[
|
2629
|
-
// expected props files
|
2630
|
-
("Directory.Packages.props", """
|
2631
|
-
<Project>
|
2632
|
-
<PropertyGroup>
|
2633
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2634
|
-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2635
|
-
</PropertyGroup>
|
2636
|
-
<ItemGroup>
|
2637
|
-
<PackageVersion Include="Some.Package" Version="3.1.3" />
|
2638
|
-
<PackageVersion Include="Some.Transitive.Dependency" Version="5.0.2" />
|
2639
|
-
</ItemGroup>
|
2640
|
-
</Project>
|
2641
|
-
""")
|
2642
|
-
],
|
2643
|
-
expectedResult: new()
|
2644
|
-
{
|
2645
|
-
UpdateOperations = [
|
2646
|
-
new PinnedUpdate()
|
2647
|
-
{
|
2648
|
-
DependencyName = "Some.Transitive.Dependency",
|
2649
|
-
NewVersion = NuGetVersion.Parse("5.0.2"),
|
2650
|
-
UpdatedFiles = ["/src/Directory.Build.props", "/src/Directory.Packages.props", "/src/test-project.csproj"]
|
2651
|
-
}
|
2652
|
-
]
|
2653
|
-
}
|
2654
|
-
);
|
2655
|
-
}
|
2656
|
-
|
2657
|
-
[Fact]
|
2658
|
-
public async Task PropsFileNameWithDifferentCasing()
|
2659
|
-
{
|
2660
|
-
await TestUpdateForProject("Some.Package", "12.0.1", "13.0.1",
|
2661
|
-
packages:
|
2662
|
-
[
|
2663
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net7.0"),
|
2664
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net7.0"),
|
2665
|
-
],
|
2666
|
-
projectContents: """
|
2667
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2668
|
-
<PropertyGroup>
|
2669
|
-
<TargetFramework>net7.0</TargetFramework>
|
2670
|
-
</PropertyGroup>
|
2671
|
-
<ItemGroup>
|
2672
|
-
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
2673
|
-
</ItemGroup>
|
2674
|
-
</Project>
|
2675
|
-
""",
|
2676
|
-
additionalFiles:
|
2677
|
-
[
|
2678
|
-
("Directory.Build.props", """
|
2679
|
-
<Project>
|
2680
|
-
<Import Project="Versions.Props" />
|
2681
|
-
</Project>
|
2682
|
-
"""),
|
2683
|
-
// notice the uppercase 'P' in the file name
|
2684
|
-
("Versions.Props", """
|
2685
|
-
<Project>
|
2686
|
-
<PropertyGroup>
|
2687
|
-
<SomePackageVersion>12.0.1</SomePackageVersion>
|
2688
|
-
</PropertyGroup>
|
2689
|
-
</Project>
|
2690
|
-
""")
|
2691
|
-
],
|
2692
|
-
// no change
|
2693
|
-
expectedProjectContents: """
|
2694
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2695
|
-
<PropertyGroup>
|
2696
|
-
<TargetFramework>net7.0</TargetFramework>
|
2697
|
-
</PropertyGroup>
|
2698
|
-
<ItemGroup>
|
2699
|
-
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
2700
|
-
</ItemGroup>
|
2701
|
-
</Project>
|
2702
|
-
""",
|
2703
|
-
additionalFilesExpected:
|
2704
|
-
[
|
2705
|
-
// no change
|
2706
|
-
("Directory.Build.props", """
|
2707
|
-
<Project>
|
2708
|
-
<Import Project="Versions.Props" />
|
2709
|
-
</Project>
|
2710
|
-
"""),
|
2711
|
-
// version number was updated here
|
2712
|
-
("Versions.Props", """
|
2713
|
-
<Project>
|
2714
|
-
<PropertyGroup>
|
2715
|
-
<SomePackageVersion>13.0.1</SomePackageVersion>
|
2716
|
-
</PropertyGroup>
|
2717
|
-
</Project>
|
2718
|
-
""")
|
2719
|
-
]
|
2720
|
-
);
|
2721
|
-
}
|
2722
|
-
|
2723
|
-
[Fact]
|
2724
|
-
public async Task VersionAttributeWithDifferentCasing_VersionNumberInline()
|
2725
|
-
{
|
2726
|
-
// the version attribute in the project has an all lowercase name
|
2727
|
-
await TestUpdateForProject("Some.Package", "12.0.1", "13.0.1",
|
2728
|
-
packages:
|
2729
|
-
[
|
2730
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net7.0"),
|
2731
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net7.0"),
|
2732
|
-
],
|
2733
|
-
projectContents: """
|
2734
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2735
|
-
<PropertyGroup>
|
2736
|
-
<TargetFramework>net7.0</TargetFramework>
|
2737
|
-
</PropertyGroup>
|
2738
|
-
<ItemGroup>
|
2739
|
-
<PackageReference Include="Some.Package" version="12.0.1" />
|
2740
|
-
</ItemGroup>
|
2741
|
-
</Project>
|
2742
|
-
""",
|
2743
|
-
expectedProjectContents: """
|
2744
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2745
|
-
<PropertyGroup>
|
2746
|
-
<TargetFramework>net7.0</TargetFramework>
|
2747
|
-
</PropertyGroup>
|
2748
|
-
<ItemGroup>
|
2749
|
-
<PackageReference Include="Some.Package" version="13.0.1" />
|
2750
|
-
</ItemGroup>
|
2751
|
-
</Project>
|
2752
|
-
"""
|
2753
|
-
);
|
2754
|
-
}
|
2755
|
-
|
2756
|
-
[Fact]
|
2757
|
-
public async Task VersionAttributeWithDifferentCasing_VersionNumberInProperty()
|
2758
|
-
{
|
2759
|
-
// the version attribute in the project has an all lowercase name
|
2760
|
-
await TestUpdateForProject("Some.Package", "12.0.1", "13.0.1",
|
2761
|
-
packages:
|
2762
|
-
[
|
2763
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net7.0"),
|
2764
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net7.0"),
|
2765
|
-
],
|
2766
|
-
projectContents: """
|
2767
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2768
|
-
<PropertyGroup>
|
2769
|
-
<TargetFramework>net7.0</TargetFramework>
|
2770
|
-
</PropertyGroup>
|
2771
|
-
<ItemGroup>
|
2772
|
-
<PackageReference Include="Some.Package" version="$(SomePackageVersion)" />
|
2773
|
-
</ItemGroup>
|
2774
|
-
</Project>
|
2775
|
-
""",
|
2776
|
-
additionalFiles:
|
2777
|
-
[
|
2778
|
-
("Directory.Build.props", """
|
2779
|
-
<Project>
|
2780
|
-
<Import Project="Versions.props" />
|
2781
|
-
</Project>
|
2782
|
-
"""),
|
2783
|
-
("Versions.props", """
|
2784
|
-
<Project>
|
2785
|
-
<PropertyGroup>
|
2786
|
-
<SomePackageVersion>12.0.1</SomePackageVersion>
|
2787
|
-
</PropertyGroup>
|
2788
|
-
</Project>
|
2789
|
-
""")
|
2790
|
-
],
|
2791
|
-
// no change
|
2792
|
-
expectedProjectContents: """
|
2793
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2794
|
-
<PropertyGroup>
|
2795
|
-
<TargetFramework>net7.0</TargetFramework>
|
2796
|
-
</PropertyGroup>
|
2797
|
-
<ItemGroup>
|
2798
|
-
<PackageReference Include="Some.Package" version="$(SomePackageVersion)" />
|
2799
|
-
</ItemGroup>
|
2800
|
-
</Project>
|
2801
|
-
""",
|
2802
|
-
additionalFilesExpected:
|
2803
|
-
[
|
2804
|
-
// no change
|
2805
|
-
("Directory.Build.props", """
|
2806
|
-
<Project>
|
2807
|
-
<Import Project="Versions.props" />
|
2808
|
-
</Project>
|
2809
|
-
"""),
|
2810
|
-
// version number was updated here
|
2811
|
-
("Versions.props", """
|
2812
|
-
<Project>
|
2813
|
-
<PropertyGroup>
|
2814
|
-
<SomePackageVersion>13.0.1</SomePackageVersion>
|
2815
|
-
</PropertyGroup>
|
2816
|
-
</Project>
|
2817
|
-
""")
|
2818
|
-
]
|
2819
|
-
);
|
2820
|
-
}
|
2821
|
-
|
2822
|
-
[Fact]
|
2823
|
-
public async Task DirectoryPackagesPropsDoesCentralPackagePinningGetsUpdatedIfTransitiveFlagIsSet()
|
2824
|
-
{
|
2825
|
-
await TestUpdateForProject("Some.Package.Extensions", "1.0.0", "1.1.0",
|
2826
|
-
packages:
|
2827
|
-
[
|
2828
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net7.0"),
|
2829
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package.Extensions", "1.0.0", "net7.0", [(null, [("Some.Package", "1.0.0")])]),
|
2830
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package.Extensions", "1.1.0", "net7.0", [(null, [("Some.Package", "1.0.0")])]),
|
2831
|
-
],
|
2832
|
-
isTransitive: true,
|
2833
|
-
projectContents: """
|
2834
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2835
|
-
<PropertyGroup>
|
2836
|
-
<TargetFramework>net7.0</TargetFramework>
|
2837
|
-
</PropertyGroup>
|
2838
|
-
<ItemGroup>
|
2839
|
-
<PackageReference Include="Some.Package.Extensions" />
|
2840
|
-
</ItemGroup>
|
2841
|
-
</Project>
|
2842
|
-
""",
|
2843
|
-
additionalFiles:
|
2844
|
-
[
|
2845
|
-
("Directory.Build.props", "<Project />"),
|
2846
|
-
("Directory.Packages.props", """
|
2847
|
-
<Project>
|
2848
|
-
<PropertyGroup>
|
2849
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2850
|
-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2851
|
-
</PropertyGroup>
|
2852
|
-
<ItemGroup>
|
2853
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
2854
|
-
<PackageVersion Include="Some.Package.Extensions" Version="1.0.0" />
|
2855
|
-
</ItemGroup>
|
2856
|
-
</Project>
|
2857
|
-
""")
|
2858
|
-
],
|
2859
|
-
expectedProjectContents: """
|
2860
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2861
|
-
<PropertyGroup>
|
2862
|
-
<TargetFramework>net7.0</TargetFramework>
|
2863
|
-
</PropertyGroup>
|
2864
|
-
<ItemGroup>
|
2865
|
-
<PackageReference Include="Some.Package.Extensions" />
|
2866
|
-
</ItemGroup>
|
2867
|
-
</Project>
|
2868
|
-
""",
|
2869
|
-
additionalFilesExpected:
|
2870
|
-
[
|
2871
|
-
("Directory.Packages.props", """
|
2872
|
-
<Project>
|
2873
|
-
<PropertyGroup>
|
2874
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2875
|
-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2876
|
-
</PropertyGroup>
|
2877
|
-
<ItemGroup>
|
2878
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
2879
|
-
<PackageVersion Include="Some.Package.Extensions" Version="1.1.0" />
|
2880
|
-
</ItemGroup>
|
2881
|
-
</Project>
|
2882
|
-
""")
|
2883
|
-
]
|
2884
|
-
);
|
2885
|
-
}
|
2886
|
-
|
2887
|
-
[Fact]
|
2888
|
-
public async Task DirectoryPackagesPropsDoesNotGetDuplicateEntryIfCentralTransitivePinningIsUsed()
|
2889
|
-
{
|
2890
|
-
await TestUpdateForProject("Some.Package.Extensions", "1.0.0", "1.1.0",
|
2891
|
-
packages:
|
2892
|
-
[
|
2893
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net7.0"),
|
2894
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package.Extensions", "1.0.0", "net7.0", [(null, [("Some.Package", "1.0.0")])]),
|
2895
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package.Extensions", "1.1.0", "net7.0", [(null, [("Some.Package", "1.0.0")])]),
|
2896
|
-
],
|
2897
|
-
isTransitive: true,
|
2898
|
-
projectContents: """
|
2899
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2900
|
-
<PropertyGroup>
|
2901
|
-
<TargetFramework>net7.0</TargetFramework>
|
2902
|
-
</PropertyGroup>
|
2903
|
-
<ItemGroup>
|
2904
|
-
<PackageReference Include="Some.Package.Extensions" />
|
2905
|
-
</ItemGroup>
|
2906
|
-
</Project>
|
2907
|
-
""",
|
2908
|
-
additionalFiles:
|
2909
|
-
[
|
2910
|
-
("Directory.Packages.props", """
|
2911
|
-
<Project>
|
2912
|
-
<PropertyGroup>
|
2913
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2914
|
-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2915
|
-
</PropertyGroup>
|
2916
|
-
<ItemGroup>
|
2917
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
2918
|
-
<PackageVersion Include="Some.Package.Extensions" Version="1.1.0" />
|
2919
|
-
</ItemGroup>
|
2920
|
-
</Project>
|
2921
|
-
""")
|
2922
|
-
],
|
2923
|
-
expectedProjectContents: """
|
2924
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2925
|
-
<PropertyGroup>
|
2926
|
-
<TargetFramework>net7.0</TargetFramework>
|
2927
|
-
</PropertyGroup>
|
2928
|
-
<ItemGroup>
|
2929
|
-
<PackageReference Include="Some.Package.Extensions" />
|
2930
|
-
</ItemGroup>
|
2931
|
-
</Project>
|
2932
|
-
""",
|
2933
|
-
additionalFilesExpected:
|
2934
|
-
[
|
2935
|
-
("Directory.Packages.props", """
|
2936
|
-
<Project>
|
2937
|
-
<PropertyGroup>
|
2938
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
2939
|
-
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
2940
|
-
</PropertyGroup>
|
2941
|
-
<ItemGroup>
|
2942
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
2943
|
-
<PackageVersion Include="Some.Package.Extensions" Version="1.1.0" />
|
2944
|
-
</ItemGroup>
|
2945
|
-
</Project>
|
2946
|
-
""")
|
2947
|
-
]
|
2948
|
-
);
|
2949
|
-
}
|
2950
|
-
|
2951
|
-
[Fact]
|
2952
|
-
public async Task PackageWithFourPartVersionCanBeUpdated()
|
2953
|
-
{
|
2954
|
-
await TestUpdateForProject("Some.Package", "1.2.3.4", "1.2.3.5",
|
2955
|
-
packages:
|
2956
|
-
[
|
2957
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.2.3.4", "net7.0"),
|
2958
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.2.3.5", "net7.0"),
|
2959
|
-
],
|
2960
|
-
projectContents: """
|
2961
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2962
|
-
<PropertyGroup>
|
2963
|
-
<TargetFramework>net7.0</TargetFramework>
|
2964
|
-
</PropertyGroup>
|
2965
|
-
<ItemGroup>
|
2966
|
-
<PackageReference Include="Some.Package" Version="1.2.3.4" />
|
2967
|
-
</ItemGroup>
|
2968
|
-
</Project>
|
2969
|
-
""",
|
2970
|
-
expectedProjectContents: """
|
2971
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2972
|
-
<PropertyGroup>
|
2973
|
-
<TargetFramework>net7.0</TargetFramework>
|
2974
|
-
</PropertyGroup>
|
2975
|
-
<ItemGroup>
|
2976
|
-
<PackageReference Include="Some.Package" Version="1.2.3.5" />
|
2977
|
-
</ItemGroup>
|
2978
|
-
</Project>
|
2979
|
-
"""
|
2980
|
-
);
|
2981
|
-
}
|
2982
|
-
|
2983
|
-
[Fact]
|
2984
|
-
public async Task PackageWithOnlyBuildTargetsCanBeUpdated()
|
2985
|
-
{
|
2986
|
-
await TestUpdateForProject("Some.Package", "7.0.0", "7.1.0",
|
2987
|
-
packages:
|
2988
|
-
[
|
2989
|
-
new("Some.Package", "7.0.0", Files: [("buildTransitive/net7.0/_._", [])]),
|
2990
|
-
new("Some.Package", "7.1.0", Files: [("buildTransitive/net7.0/_._", [])]),
|
2991
|
-
],
|
2992
|
-
projectContents: """
|
2993
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
2994
|
-
<PropertyGroup>
|
2995
|
-
<TargetFramework>net8.0</TargetFramework>
|
2996
|
-
</PropertyGroup>
|
2997
|
-
<ItemGroup>
|
2998
|
-
<PackageReference Include="Some.Package" Version="7.0.0" />
|
2999
|
-
</ItemGroup>
|
3000
|
-
</Project>
|
3001
|
-
""",
|
3002
|
-
expectedProjectContents: """
|
3003
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3004
|
-
<PropertyGroup>
|
3005
|
-
<TargetFramework>net8.0</TargetFramework>
|
3006
|
-
</PropertyGroup>
|
3007
|
-
<ItemGroup>
|
3008
|
-
<PackageReference Include="Some.Package" Version="7.1.0" />
|
3009
|
-
</ItemGroup>
|
3010
|
-
</Project>
|
3011
|
-
"""
|
3012
|
-
);
|
3013
|
-
}
|
3014
|
-
|
3015
|
-
[Fact]
|
3016
|
-
public async Task UpdatePackageVersionFromPropertiesWithAndWithoutConditions()
|
3017
|
-
{
|
3018
|
-
await TestUpdateForProject("Some.Package", "12.0.1", "13.0.1",
|
3019
|
-
packages:
|
3020
|
-
[
|
3021
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0"),
|
3022
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
3023
|
-
],
|
3024
|
-
projectContents: """
|
3025
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3026
|
-
<PropertyGroup>
|
3027
|
-
<TargetFramework>net8.0</TargetFramework>
|
3028
|
-
<SomePackageVersion Condition="$(UseLegacyVersion7) == 'true'">7.0.1</SomePackageVersion>
|
3029
|
-
<SomePackageVersion>12.0.1</SomePackageVersion>
|
3030
|
-
<SomePackageVersion Condition="$(UseLegacyVersion9) == 'true'">9.0.1</SomePackageVersion>
|
3031
|
-
</PropertyGroup>
|
3032
|
-
<ItemGroup>
|
3033
|
-
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
3034
|
-
</ItemGroup>
|
3035
|
-
</Project>
|
3036
|
-
""",
|
3037
|
-
expectedProjectContents: """
|
3038
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3039
|
-
<PropertyGroup>
|
3040
|
-
<TargetFramework>net8.0</TargetFramework>
|
3041
|
-
<SomePackageVersion Condition="$(UseLegacyVersion7) == 'true'">7.0.1</SomePackageVersion>
|
3042
|
-
<SomePackageVersion>13.0.1</SomePackageVersion>
|
3043
|
-
<SomePackageVersion Condition="$(UseLegacyVersion9) == 'true'">9.0.1</SomePackageVersion>
|
3044
|
-
</PropertyGroup>
|
3045
|
-
<ItemGroup>
|
3046
|
-
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
3047
|
-
</ItemGroup>
|
3048
|
-
</Project>
|
3049
|
-
"""
|
3050
|
-
);
|
3051
|
-
}
|
3052
|
-
|
3053
|
-
[Fact]
|
3054
|
-
public async Task UpdatePackageVersionFromPropertyWithConditionCheckingForEmptyString()
|
3055
|
-
{
|
3056
|
-
await TestUpdateForProject("Some.Package", "12.0.1", "13.0.1",
|
3057
|
-
packages:
|
3058
|
-
[
|
3059
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "12.0.1", "net8.0"),
|
3060
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
3061
|
-
],
|
3062
|
-
projectContents: """
|
3063
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3064
|
-
<PropertyGroup>
|
3065
|
-
<TargetFramework>net8.0</TargetFramework>
|
3066
|
-
<SomePackageVersion Condition="$(SomePackageVersion) == ''">12.0.1</SomePackageVersion>
|
3067
|
-
<SomePackageVersion Condition="$(UseLegacyVersion9) == 'true'">9.0.1</SomePackageVersion>
|
3068
|
-
</PropertyGroup>
|
3069
|
-
<ItemGroup>
|
3070
|
-
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
3071
|
-
</ItemGroup>
|
3072
|
-
</Project>
|
3073
|
-
""",
|
3074
|
-
expectedProjectContents: """
|
3075
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3076
|
-
<PropertyGroup>
|
3077
|
-
<TargetFramework>net8.0</TargetFramework>
|
3078
|
-
<SomePackageVersion Condition="$(SomePackageVersion) == ''">13.0.1</SomePackageVersion>
|
3079
|
-
<SomePackageVersion Condition="$(UseLegacyVersion9) == 'true'">9.0.1</SomePackageVersion>
|
3080
|
-
</PropertyGroup>
|
3081
|
-
<ItemGroup>
|
3082
|
-
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
3083
|
-
</ItemGroup>
|
3084
|
-
</Project>
|
3085
|
-
"""
|
3086
|
-
);
|
3087
|
-
}
|
3088
|
-
|
3089
|
-
[Fact]
|
3090
|
-
public async Task UpdatingTransitiveDependencyWithNewSolverCanUpdateJustTheTopLevelPackage()
|
3091
|
-
{
|
3092
|
-
// we've been asked to explicitly update a transitive dependency, but we can solve it by updating the top-level package instead
|
3093
|
-
await TestUpdateForProject("Transitive.Package", "7.0.0", "8.0.0",
|
3094
|
-
isTransitive: true,
|
3095
|
-
packages:
|
3096
|
-
[
|
3097
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0", [("net8.0", [("Transitive.Package", "[7.0.0]")])]),
|
3098
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.0.0", "net8.0", [("net8.0", [("Transitive.Package", "[8.0.0]")])]),
|
3099
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Package", "7.0.0", "net8.0"),
|
3100
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Package", "8.0.0", "net8.0"),
|
3101
|
-
],
|
3102
|
-
projectContents: """
|
3103
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3104
|
-
<PropertyGroup>
|
3105
|
-
<TargetFramework>net8.0</TargetFramework>
|
3106
|
-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
3107
|
-
</PropertyGroup>
|
3108
|
-
<ItemGroup>
|
3109
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
3110
|
-
</ItemGroup>
|
3111
|
-
</Project>
|
3112
|
-
""",
|
3113
|
-
expectedProjectContents: """
|
3114
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3115
|
-
<PropertyGroup>
|
3116
|
-
<TargetFramework>net8.0</TargetFramework>
|
3117
|
-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
|
3118
|
-
</PropertyGroup>
|
3119
|
-
<ItemGroup>
|
3120
|
-
<PackageReference Include="Some.Package" Version="2.0.0" />
|
3121
|
-
</ItemGroup>
|
3122
|
-
</Project>
|
3123
|
-
""",
|
3124
|
-
expectedResult: new()
|
3125
|
-
{
|
3126
|
-
UpdateOperations = [
|
3127
|
-
new DirectUpdate()
|
3128
|
-
{
|
3129
|
-
DependencyName = "Some.Package",
|
3130
|
-
NewVersion = NuGetVersion.Parse("2.0.0"),
|
3131
|
-
UpdatedFiles = ["/src/test-project.csproj"]
|
3132
|
-
},
|
3133
|
-
new ParentUpdate()
|
3134
|
-
{
|
3135
|
-
DependencyName = "Transitive.Package",
|
3136
|
-
NewVersion = NuGetVersion.Parse("8.0.0"),
|
3137
|
-
UpdatedFiles = ["/src/test-project.csproj"],
|
3138
|
-
ParentDependencyName = "Some.Package",
|
3139
|
-
ParentNewVersion = NuGetVersion.Parse("2.0.0")
|
3140
|
-
}
|
3141
|
-
]
|
3142
|
-
}
|
3143
|
-
);
|
3144
|
-
}
|
3145
|
-
|
3146
|
-
[Theory]
|
3147
|
-
[InlineData(true)]
|
3148
|
-
[InlineData(false)]
|
3149
|
-
public async Task NoChange_IfThereAreIncoherentVersions(bool useLegacyDependencySolver)
|
3150
|
-
{
|
3151
|
-
var experimentsManager = new ExperimentsManager() { UseLegacyDependencySolver = useLegacyDependencySolver };
|
3152
|
-
|
3153
|
-
// trying to update `Transitive.Dependency` to 1.1.0 would normally pull `Some.Package` from 1.0.0 to 1.1.0,
|
3154
|
-
// but the TFM doesn't allow it
|
3155
|
-
await TestNoChangeforProject("Transitive.Dependency", "1.0.0", "1.1.0",
|
3156
|
-
experimentsManager: experimentsManager,
|
3157
|
-
packages:
|
3158
|
-
[
|
3159
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net7.0", [(null, [("Transitive.Dependency", "[1.0.0]")])]),
|
3160
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.1.0", "net8.0", [(null, [("Transitive.Dependency", "[1.1.0]")])]),
|
3161
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Dependency", "1.0.0", "net7.0"),
|
3162
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Dependency", "1.1.0", "net7.0"),
|
3163
|
-
],
|
3164
|
-
projectContents: """
|
3165
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3166
|
-
<PropertyGroup>
|
3167
|
-
<TargetFramework>net7.0</TargetFramework>
|
3168
|
-
</PropertyGroup>
|
3169
|
-
<ItemGroup>
|
3170
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
3171
|
-
<PackageReference Include="Transitive.Dependency" Version="1.0.0" />
|
3172
|
-
</ItemGroup>
|
3173
|
-
</Project>
|
3174
|
-
"""
|
3175
|
-
);
|
3176
|
-
}
|
3177
|
-
|
3178
|
-
[Fact]
|
3179
|
-
public async Task NoChange_IfTargetFrameworkCouldNotBeEvaluated()
|
3180
|
-
{
|
3181
|
-
// Make sure we don't throw if the project's TFM is an unresolvable property
|
3182
|
-
await TestNoChangeforProject("Some.Package", "7.0.1", "13.0.1",
|
3183
|
-
packages:
|
3184
|
-
[
|
3185
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.1", "net8.0"),
|
3186
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
3187
|
-
],
|
3188
|
-
projectContents: """
|
3189
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3190
|
-
<PropertyGroup>
|
3191
|
-
<TargetFramework>$(PropertyThatCannotBeResolved)</TargetFramework>
|
3192
|
-
</PropertyGroup>
|
3193
|
-
<ItemGroup>
|
3194
|
-
<PackageReference Include="Some.Package" Version="7.0.1" />
|
3195
|
-
</ItemGroup>
|
3196
|
-
</Project>
|
3197
|
-
"""
|
3198
|
-
);
|
3199
|
-
}
|
3200
|
-
|
3201
|
-
[Fact]
|
3202
|
-
public async Task NoChange_IfPeerDependenciesCannotBeEvaluated()
|
3203
|
-
{
|
3204
|
-
// make sure we don't throw if we find conflicting peer dependencies; this can happen in multi-tfm projects if the dependencies are too complicated to resolve
|
3205
|
-
// eventually this should be able to be resolved, but currently we can't branch on the different packages for different TFMs
|
3206
|
-
await TestNoChangeforProject("Some.Package", "1.0.0", "1.1.0",
|
3207
|
-
packages:
|
3208
|
-
[
|
3209
|
-
// initial packages
|
3210
|
-
new MockNuGetPackage("Some.Package", "1.0.0",
|
3211
|
-
DependencyGroups: [
|
3212
|
-
("net8.0", [("Transitive.Dependency", "8.0.0")]),
|
3213
|
-
("net9.0", [("Transitive.Dependency", "9.0.0")])
|
3214
|
-
]),
|
3215
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Dependency", "8.0.0", "net8.0"),
|
3216
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Dependency", "9.0.0", "net9.0"),
|
3217
|
-
|
3218
|
-
// what we're trying to update to, but will fail
|
3219
|
-
new MockNuGetPackage("Some.Package", "1.1.0",
|
3220
|
-
DependencyGroups: [
|
3221
|
-
("net8.0", [("Transitive.Dependency", "8.1.0")]),
|
3222
|
-
("net9.0", [("Transitive.Dependency", "9.1.0")])
|
3223
|
-
]),
|
3224
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Dependency", "8.1.0", "net8.0"),
|
3225
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Dependency", "9.1.0", "net9.0"),
|
3226
|
-
],
|
3227
|
-
projectContents: """
|
3228
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3229
|
-
<PropertyGroup>
|
3230
|
-
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
|
3231
|
-
</PropertyGroup>
|
3232
|
-
<ItemGroup>
|
3233
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
3234
|
-
</ItemGroup>
|
3235
|
-
</Project>
|
3236
|
-
""",
|
3237
|
-
expectedResult: new() // success
|
3238
|
-
{
|
3239
|
-
UpdateOperations = []
|
3240
|
-
}
|
3241
|
-
);
|
3242
|
-
}
|
3243
|
-
|
3244
|
-
[Fact]
|
3245
|
-
public async Task ProcessingProjectWithWorkloadReferencesDoesNotFail()
|
3246
|
-
{
|
3247
|
-
// enumerating the build files will fail if the Aspire workload is not installed; this test ensures we can
|
3248
|
-
// still process the update
|
3249
|
-
await TestUpdateForProject("Some.Package", "7.0.1", "13.0.1",
|
3250
|
-
packages:
|
3251
|
-
[
|
3252
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.1", "net8.0"),
|
3253
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
3254
|
-
],
|
3255
|
-
projectContents: """
|
3256
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3257
|
-
<PropertyGroup>
|
3258
|
-
<TargetFrameworks>net8.0-ios;net8.0-android;net8.0-macos;net8.0-maccatalyst;</TargetFrameworks>
|
3259
|
-
<IsAspireHost>true</IsAspireHost>
|
3260
|
-
</PropertyGroup>
|
3261
|
-
<ItemGroup>
|
3262
|
-
<PackageReference Include="Some.Package" Version="7.0.1" />
|
3263
|
-
</ItemGroup>
|
3264
|
-
</Project>
|
3265
|
-
""",
|
3266
|
-
expectedProjectContents: """
|
3267
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3268
|
-
<PropertyGroup>
|
3269
|
-
<TargetFrameworks>net8.0-ios;net8.0-android;net8.0-macos;net8.0-maccatalyst;</TargetFrameworks>
|
3270
|
-
<IsAspireHost>true</IsAspireHost>
|
3271
|
-
</PropertyGroup>
|
3272
|
-
<ItemGroup>
|
3273
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
3274
|
-
</ItemGroup>
|
3275
|
-
</Project>
|
3276
|
-
"""
|
3277
|
-
);
|
3278
|
-
}
|
3279
|
-
|
3280
|
-
[Fact]
|
3281
|
-
public async Task ProcessingProjectWithAspireDoesNotFailEvenThoughWorkloadIsNotInstalled()
|
3282
|
-
{
|
3283
|
-
// enumerating the build files will fail if the Aspire workload is not installed; this test ensures we can
|
3284
|
-
// still process the update
|
3285
|
-
await TestUpdateForProject("Some.Package", "7.0.1", "13.0.1",
|
3286
|
-
packages:
|
3287
|
-
[
|
3288
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.1", "net8.0"),
|
3289
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
3290
|
-
],
|
3291
|
-
projectContents: """
|
3292
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3293
|
-
<PropertyGroup>
|
3294
|
-
<TargetFramework>net8.0</TargetFramework>
|
3295
|
-
<IsAspireHost>true</IsAspireHost>
|
3296
|
-
</PropertyGroup>
|
3297
|
-
<ItemGroup>
|
3298
|
-
<PackageReference Include="Some.Package" Version="7.0.1" />
|
3299
|
-
</ItemGroup>
|
3300
|
-
</Project>
|
3301
|
-
""",
|
3302
|
-
expectedProjectContents: """
|
3303
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3304
|
-
<PropertyGroup>
|
3305
|
-
<TargetFramework>net8.0</TargetFramework>
|
3306
|
-
<IsAspireHost>true</IsAspireHost>
|
3307
|
-
</PropertyGroup>
|
3308
|
-
<ItemGroup>
|
3309
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
3310
|
-
</ItemGroup>
|
3311
|
-
</Project>
|
3312
|
-
"""
|
3313
|
-
);
|
3314
|
-
}
|
3315
|
-
|
3316
|
-
[Theory]
|
3317
|
-
[InlineData(true)]
|
3318
|
-
[InlineData(false)]
|
3319
|
-
public async Task UnresolvablePropertyDoesNotStopOtherUpdates(bool useLegacyDependencySolver)
|
3320
|
-
{
|
3321
|
-
var experimentsManager = new ExperimentsManager() { UseLegacyDependencySolver = useLegacyDependencySolver };
|
3322
|
-
|
3323
|
-
// the property `$(SomeUnresolvableProperty)` cannot be resolved
|
3324
|
-
await TestUpdateForProject("Some.Package", "7.0.1", "13.0.1",
|
3325
|
-
experimentsManager: experimentsManager,
|
3326
|
-
packages:
|
3327
|
-
[
|
3328
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.1", "net8.0"),
|
3329
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
3330
|
-
MockNuGetPackage.CreateSimplePackage("Some.Other.Package", "1.0.0", "net8.0"),
|
3331
|
-
],
|
3332
|
-
projectContents: """
|
3333
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3334
|
-
<PropertyGroup>
|
3335
|
-
<TargetFramework>net8.0</TargetFramework>
|
3336
|
-
</PropertyGroup>
|
3337
|
-
<ItemGroup>
|
3338
|
-
<PackageReference Include="Some.Other.Package" Version="$(SomeUnresolvableProperty)" />
|
3339
|
-
<PackageReference Include="Some.Package" Version="7.0.1" />
|
3340
|
-
</ItemGroup>
|
3341
|
-
</Project>
|
3342
|
-
""",
|
3343
|
-
expectedProjectContents: """
|
3344
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3345
|
-
<PropertyGroup>
|
3346
|
-
<TargetFramework>net8.0</TargetFramework>
|
3347
|
-
</PropertyGroup>
|
3348
|
-
<ItemGroup>
|
3349
|
-
<PackageReference Include="Some.Other.Package" Version="$(SomeUnresolvableProperty)" />
|
3350
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
3351
|
-
</ItemGroup>
|
3352
|
-
</Project>
|
3353
|
-
"""
|
3354
|
-
);
|
3355
|
-
}
|
3356
|
-
|
3357
|
-
|
3358
|
-
[Theory]
|
3359
|
-
[InlineData(true)]
|
3360
|
-
[InlineData(false)]
|
3361
|
-
public async Task ProjectWithWorkloadsShouldNotFail(bool useLegacyDependencySolver)
|
3362
|
-
{
|
3363
|
-
var experimentsManager = new ExperimentsManager() { UseLegacyDependencySolver = useLegacyDependencySolver };
|
3364
|
-
|
3365
|
-
// the property `$(SomeUnresolvableProperty)` cannot be resolved
|
3366
|
-
await TestUpdateForProject("Some.Package", "7.0.1", "13.0.1",
|
3367
|
-
experimentsManager: experimentsManager,
|
3368
|
-
packages:
|
3369
|
-
[
|
3370
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "7.0.1", "net8.0"),
|
3371
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "13.0.1", "net8.0"),
|
3372
|
-
MockNuGetPackage.CreateSimplePackage("Some.Other.Package", "1.0.0", "net8.0"),
|
3373
|
-
],
|
3374
|
-
projectContents: """
|
3375
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3376
|
-
<PropertyGroup>
|
3377
|
-
<TargetFrameworks>net8.0;net8.0-ios;net8.0-android;net8.0-macos;net8.0-maccatalyst</TargetFrameworks>
|
3378
|
-
</PropertyGroup>
|
3379
|
-
<ItemGroup>
|
3380
|
-
<PackageReference Include="Some.Other.Package" Version="$(SomeUnresolvableProperty)" />
|
3381
|
-
<PackageReference Include="Some.Package" Version="7.0.1" />
|
3382
|
-
</ItemGroup>
|
3383
|
-
</Project>
|
3384
|
-
""",
|
3385
|
-
expectedProjectContents: """
|
3386
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3387
|
-
<PropertyGroup>
|
3388
|
-
<TargetFrameworks>net8.0;net8.0-ios;net8.0-android;net8.0-macos;net8.0-maccatalyst</TargetFrameworks>
|
3389
|
-
</PropertyGroup>
|
3390
|
-
<ItemGroup>
|
3391
|
-
<PackageReference Include="Some.Other.Package" Version="$(SomeUnresolvableProperty)" />
|
3392
|
-
<PackageReference Include="Some.Package" Version="13.0.1" />
|
3393
|
-
</ItemGroup>
|
3394
|
-
</Project>
|
3395
|
-
"""
|
3396
|
-
);
|
3397
|
-
}
|
3398
|
-
|
3399
|
-
[Theory]
|
3400
|
-
[InlineData(true)]
|
3401
|
-
[InlineData(false)]
|
3402
|
-
public async Task UpdatingPackageAlsoUpdatesAnythingWithADependencyOnTheUpdatedPackage(bool useLegacyDependencySolver)
|
3403
|
-
{
|
3404
|
-
var experimentsManager = new ExperimentsManager() { UseLegacyDependencySolver = useLegacyDependencySolver };
|
3405
|
-
|
3406
|
-
// updating Some.Package from 3.3.30 requires that Some.Package.Extensions also be updated
|
3407
|
-
await TestUpdateForProject("Some.Package", "3.3.30", "3.4.3",
|
3408
|
-
experimentsManager: experimentsManager,
|
3409
|
-
packages:
|
3410
|
-
[
|
3411
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "3.3.30", "net8.0"),
|
3412
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "3.4.0", "net8.0"), // this will be ignored
|
3413
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "3.4.3", "net8.0"),
|
3414
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package.Extensions", "3.3.30", "net8.0", [(null, [("Some.Package", "[3.3.30]")])]), // the dependency version is very strict with []
|
3415
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package.Extensions", "3.4.0", "net8.0", [(null, [("Some.Package", "[3.4.0]")])]), // this will be ignored
|
3416
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package.Extensions", "3.4.3", "net8.0", [(null, [("Some.Package", "[3.4.3]")])]),
|
3417
|
-
],
|
3418
|
-
projectContents: """
|
3419
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3420
|
-
<PropertyGroup>
|
3421
|
-
<TargetFramework>net8.0</TargetFramework>
|
3422
|
-
</PropertyGroup>
|
3423
|
-
<ItemGroup>
|
3424
|
-
<PackageReference Include="Some.Package" Version="3.3.30" />
|
3425
|
-
<PackageReference Include="Some.Package.Extensions" Version="3.3.30" />
|
3426
|
-
</ItemGroup>
|
3427
|
-
</Project>
|
3428
|
-
""",
|
3429
|
-
expectedProjectContents: """
|
3430
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3431
|
-
<PropertyGroup>
|
3432
|
-
<TargetFramework>net8.0</TargetFramework>
|
3433
|
-
</PropertyGroup>
|
3434
|
-
<ItemGroup>
|
3435
|
-
<PackageReference Include="Some.Package" Version="3.4.3" />
|
3436
|
-
<PackageReference Include="Some.Package.Extensions" Version="3.4.3" />
|
3437
|
-
</ItemGroup>
|
3438
|
-
</Project>
|
3439
|
-
"""
|
3440
|
-
);
|
3441
|
-
}
|
3442
|
-
|
3443
|
-
[Fact]
|
3444
|
-
public async Task UpdatePackageWithWhitespaceInTheXMLAttributeValue()
|
3445
|
-
{
|
3446
|
-
await TestUpdateForProject("Some.Package", "1.0.0", "1.1.0",
|
3447
|
-
packages:
|
3448
|
-
[
|
3449
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net8.0"),
|
3450
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.1.0", "net8.0"),
|
3451
|
-
],
|
3452
|
-
projectContents: """
|
3453
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3454
|
-
<PropertyGroup>
|
3455
|
-
<TargetFramework>net8.0</TargetFramework>
|
3456
|
-
</PropertyGroup>
|
3457
|
-
<ItemGroup>
|
3458
|
-
<PackageReference Include=" Some.Package " Version="1.0.0" />
|
3459
|
-
</ItemGroup>
|
3460
|
-
</Project>
|
3461
|
-
""",
|
3462
|
-
expectedProjectContents: """
|
3463
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3464
|
-
<PropertyGroup>
|
3465
|
-
<TargetFramework>net8.0</TargetFramework>
|
3466
|
-
</PropertyGroup>
|
3467
|
-
<ItemGroup>
|
3468
|
-
<PackageReference Include=" Some.Package " Version="1.1.0" />
|
3469
|
-
</ItemGroup>
|
3470
|
-
</Project>
|
3471
|
-
"""
|
3472
|
-
);
|
3473
|
-
}
|
3474
|
-
|
3475
|
-
[Fact]
|
3476
|
-
public async Task ReportsPrivateSourceAuthenticationFailure()
|
3477
|
-
{
|
3478
|
-
static (int, string) TestHttpHandler(string uriString)
|
3479
|
-
{
|
3480
|
-
var uri = new Uri(uriString, UriKind.Absolute);
|
3481
|
-
var baseUrl = $"{uri.Scheme}://{uri.Host}:{uri.Port}";
|
3482
|
-
return uri.PathAndQuery switch
|
3483
|
-
{
|
3484
|
-
_ => (401, "{}"), // everything is unauthorized
|
3485
|
-
};
|
3486
|
-
}
|
3487
|
-
using var http = TestHttpServer.CreateTestStringServer(TestHttpHandler);
|
3488
|
-
await TestUpdateForProject("Some.Package", "1.0.0", "1.1.0",
|
3489
|
-
projectContents: """
|
3490
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3491
|
-
<PropertyGroup>
|
3492
|
-
<TargetFramework>net8.0</TargetFramework>
|
3493
|
-
</PropertyGroup>
|
3494
|
-
<ItemGroup>
|
3495
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
3496
|
-
</ItemGroup>
|
3497
|
-
</Project>
|
3498
|
-
""",
|
3499
|
-
additionalFiles:
|
3500
|
-
[
|
3501
|
-
("NuGet.Config", $"""
|
3502
|
-
<configuration>
|
3503
|
-
<packageSources>
|
3504
|
-
<clear />
|
3505
|
-
<add key="private_feed" value="{http.BaseUrl.TrimEnd('/')}/index.json" allowInsecureConnections="true" />
|
3506
|
-
</packageSources>
|
3507
|
-
</configuration>
|
3508
|
-
""")
|
3509
|
-
],
|
3510
|
-
expectedProjectContents: """
|
3511
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3512
|
-
<PropertyGroup>
|
3513
|
-
<TargetFramework>net8.0</TargetFramework>
|
3514
|
-
</PropertyGroup>
|
3515
|
-
<ItemGroup>
|
3516
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
3517
|
-
</ItemGroup>
|
3518
|
-
</Project>
|
3519
|
-
""",
|
3520
|
-
expectedResult: new()
|
3521
|
-
{
|
3522
|
-
Error = new PrivateSourceAuthenticationFailure([$"{http.BaseUrl.TrimEnd('/')}/index.json"]),
|
3523
|
-
UpdateOperations = [],
|
3524
|
-
}
|
3525
|
-
);
|
3526
|
-
}
|
3527
|
-
|
3528
|
-
[Fact]
|
3529
|
-
public async Task UpdateSdkManagedPackage_DirectDependency()
|
3530
|
-
{
|
3531
|
-
// To avoid a unit test that's tightly coupled to the installed SDK, several values are simulated,
|
3532
|
-
// including the runtime major version, the current Microsoft.NETCore.App.Ref package, and the package
|
3533
|
-
// correlation file. Doing this requires a temporary file and environment variable override.
|
3534
|
-
var runtimeMajorVersion = Environment.Version.Major;
|
3535
|
-
var netCoreAppRefPackage = MockNuGetPackage.GetMicrosoftNETCoreAppRefPackage(runtimeMajorVersion);
|
3536
|
-
using var tempDirectory = new TemporaryDirectory();
|
3537
|
-
var packageCorrelationFile = Path.Combine(tempDirectory.DirectoryPath, "dotnet-package-correlation.json");
|
3538
|
-
await File.WriteAllTextAsync(packageCorrelationFile, $$"""
|
3539
|
-
{
|
3540
|
-
"Runtimes": {
|
3541
|
-
"{{runtimeMajorVersion}}.0.0": {
|
3542
|
-
"Packages": {
|
3543
|
-
"{{netCoreAppRefPackage.Id}}": "{{netCoreAppRefPackage.Version}}",
|
3544
|
-
"System.Text.Json": "{{runtimeMajorVersion}}.0.98"
|
3545
|
-
}
|
3546
|
-
}
|
3547
|
-
}
|
3548
|
-
}
|
3549
|
-
""");
|
3550
|
-
using var tempEnvironment = new TemporaryEnvironment([("DOTNET_PACKAGE_CORRELATION_FILE_PATH", packageCorrelationFile)]);
|
3551
|
-
|
3552
|
-
// In the `packages` section below, we fake a `System.Text.Json` package with a low assembly version that
|
3553
|
-
// will always trigger the replacement so that can be detected and then the equivalent version is pulled
|
3554
|
-
// from the correlation file specified above. In the original project contents, package version `x.0.98`
|
3555
|
-
// is reported which makes the update to `x.0.99` always possible.
|
3556
|
-
await TestUpdateForProject("System.Text.Json", $"{runtimeMajorVersion}.0.98", $"{runtimeMajorVersion}.0.99",
|
3557
|
-
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true, InstallDotnetSdks = true },
|
3558
|
-
packages:
|
3559
|
-
[
|
3560
|
-
// this assembly version is lower than what the SDK will have
|
3561
|
-
MockNuGetPackage.CreatePackageWithAssembly("System.Text.Json", $"{runtimeMajorVersion}.0.0", $"net{runtimeMajorVersion}.0", assemblyVersion: $"{runtimeMajorVersion}.0.0.0"),
|
3562
|
-
// this assembly version is greater than what the SDK will have
|
3563
|
-
MockNuGetPackage.CreatePackageWithAssembly("System.Text.Json", $"{runtimeMajorVersion}.0.99", $"net{runtimeMajorVersion}.0", assemblyVersion: $"{runtimeMajorVersion}.99.99.99"),
|
3564
|
-
],
|
3565
|
-
projectContents: $"""
|
3566
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3567
|
-
<PropertyGroup>
|
3568
|
-
<TargetFramework>net{runtimeMajorVersion}.0</TargetFramework>
|
3569
|
-
</PropertyGroup>
|
3570
|
-
<ItemGroup>
|
3571
|
-
<PackageReference Include="System.Text.Json" Version="{runtimeMajorVersion}.0.0" />
|
3572
|
-
</ItemGroup>
|
3573
|
-
</Project>
|
3574
|
-
""",
|
3575
|
-
additionalFiles: [
|
3576
|
-
("global.json", $$"""
|
3577
|
-
{
|
3578
|
-
"sdk": {
|
3579
|
-
"version": "{{runtimeMajorVersion}}.0.100",
|
3580
|
-
"allowPrerelease": true,
|
3581
|
-
"rollForward": "latestMinor"
|
3582
|
-
}
|
3583
|
-
}
|
3584
|
-
""")
|
3585
|
-
],
|
3586
|
-
expectedProjectContents: $"""
|
3587
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3588
|
-
<PropertyGroup>
|
3589
|
-
<TargetFramework>net{runtimeMajorVersion}.0</TargetFramework>
|
3590
|
-
</PropertyGroup>
|
3591
|
-
<ItemGroup>
|
3592
|
-
<PackageReference Include="System.Text.Json" Version="{runtimeMajorVersion}.0.99" />
|
3593
|
-
</ItemGroup>
|
3594
|
-
</Project>
|
3595
|
-
"""
|
3596
|
-
);
|
3597
|
-
}
|
3598
|
-
|
3599
|
-
[Fact]
|
3600
|
-
public async Task UpdateSdkManagedPackage_TransitiveDependency()
|
3601
|
-
{
|
3602
|
-
// To avoid a unit test that's tightly coupled to the installed SDK, several values are simulated,
|
3603
|
-
// including the runtime major version, the current Microsoft.NETCore.App.Ref package, and the package
|
3604
|
-
// correlation file. Doing this requires a temporary file and environment variable override.
|
3605
|
-
var runtimeMajorVersion = Environment.Version.Major;
|
3606
|
-
var netCoreAppRefPackage = MockNuGetPackage.GetMicrosoftNETCoreAppRefPackage(runtimeMajorVersion);
|
3607
|
-
using var tempDirectory = new TemporaryDirectory();
|
3608
|
-
var packageCorrelationFile = Path.Combine(tempDirectory.DirectoryPath, "dotnet-package-correlation.json");
|
3609
|
-
await File.WriteAllTextAsync(packageCorrelationFile, $$"""
|
3610
|
-
{
|
3611
|
-
"Runtimes": {
|
3612
|
-
"{{runtimeMajorVersion}}.0.0": {
|
3613
|
-
"Packages": {
|
3614
|
-
"{{netCoreAppRefPackage.Id}}": "{{netCoreAppRefPackage.Version}}",
|
3615
|
-
"System.Text.Json": "{{runtimeMajorVersion}}.0.98"
|
3616
|
-
}
|
3617
|
-
}
|
3618
|
-
}
|
3619
|
-
}
|
3620
|
-
""");
|
3621
|
-
using var tempEnvironment = new TemporaryEnvironment([("DOTNET_PACKAGE_CORRELATION_FILE_PATH", packageCorrelationFile)]);
|
3622
|
-
|
3623
|
-
// In the `packages` section below, we fake a `System.Text.Json` package with a low assembly version that
|
3624
|
-
// will always trigger the replacement so that can be detected and then the equivalent version is pulled
|
3625
|
-
// from the correlation file specified above. In the original project contents, package version `x.0.98`
|
3626
|
-
// is reported which makes the update to `x.0.99` always possible.
|
3627
|
-
await TestUpdateForProject("System.Text.Json", $"{runtimeMajorVersion}.0.98", $"{runtimeMajorVersion}.0.99",
|
3628
|
-
isTransitive: true,
|
3629
|
-
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true, InstallDotnetSdks = true },
|
3630
|
-
packages:
|
3631
|
-
[
|
3632
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", $"net{runtimeMajorVersion}.0", [(null, [("System.Text.Json", $"[{runtimeMajorVersion}.0.0]")])]),
|
3633
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "2.0.0", $"net{runtimeMajorVersion}.0", [(null, [("System.Text.Json", $"[{runtimeMajorVersion}.0.99]")])]),
|
3634
|
-
// this assembly version is lower than what the SDK will have
|
3635
|
-
MockNuGetPackage.CreatePackageWithAssembly("System.Text.Json", $"{runtimeMajorVersion}.0.0", $"net{runtimeMajorVersion}.0", assemblyVersion: $"{runtimeMajorVersion}.0.0.0"),
|
3636
|
-
// this assembly version is greater than what the SDK will have
|
3637
|
-
MockNuGetPackage.CreatePackageWithAssembly("System.Text.Json", $"{runtimeMajorVersion}.0.99", $"net{runtimeMajorVersion}.0", assemblyVersion: $"{runtimeMajorVersion}.99.99.99"),
|
3638
|
-
],
|
3639
|
-
projectContents: $"""
|
3640
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3641
|
-
<PropertyGroup>
|
3642
|
-
<TargetFramework>net{runtimeMajorVersion}.0</TargetFramework>
|
3643
|
-
</PropertyGroup>
|
3644
|
-
<ItemGroup>
|
3645
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
3646
|
-
</ItemGroup>
|
3647
|
-
</Project>
|
3648
|
-
""",
|
3649
|
-
additionalFiles: [
|
3650
|
-
("global.json", $$"""
|
3651
|
-
{
|
3652
|
-
"sdk": {
|
3653
|
-
"version": "{{runtimeMajorVersion}}.0.100",
|
3654
|
-
"allowPrerelease": true,
|
3655
|
-
"rollForward": "latestMinor"
|
3656
|
-
}
|
3657
|
-
}
|
3658
|
-
""")
|
3659
|
-
],
|
3660
|
-
expectedProjectContents: $"""
|
3661
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3662
|
-
<PropertyGroup>
|
3663
|
-
<TargetFramework>net{runtimeMajorVersion}.0</TargetFramework>
|
3664
|
-
</PropertyGroup>
|
3665
|
-
<ItemGroup>
|
3666
|
-
<PackageReference Include="Some.Package" Version="2.0.0" />
|
3667
|
-
</ItemGroup>
|
3668
|
-
</Project>
|
3669
|
-
"""
|
3670
|
-
);
|
3671
|
-
}
|
3672
|
-
|
3673
|
-
[Fact]
|
3674
|
-
public async Task CentralPackageManagementStillWorksWithMultipleFeedsListedInConfig()
|
3675
|
-
{
|
3676
|
-
using var http1 = TestHttpServer.CreateTestNuGetFeed(
|
3677
|
-
MockNuGetPackage.CreateSimplePackage("Package1", "1.0.0", "net9.0"),
|
3678
|
-
MockNuGetPackage.CreateSimplePackage("Package1", "1.0.1", "net9.0"));
|
3679
|
-
using var http2 = TestHttpServer.CreateTestNuGetFeed(MockNuGetPackage.CreateSimplePackage("Package2", "2.0.0", "net9.0"));
|
3680
|
-
await TestUpdate("Package1", "1.0.0", "1.0.1",
|
3681
|
-
useSolution: false,
|
3682
|
-
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
3683
|
-
packages: [],
|
3684
|
-
projectContents: """
|
3685
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3686
|
-
<PropertyGroup>
|
3687
|
-
<TargetFramework>net9.0</TargetFramework>
|
3688
|
-
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
3689
|
-
<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>
|
3690
|
-
</PropertyGroup>
|
3691
|
-
<ItemGroup>
|
3692
|
-
<PackageReference Include="Package1" />
|
3693
|
-
<PackageReference Include="Package2" />
|
3694
|
-
</ItemGroup>
|
3695
|
-
</Project>
|
3696
|
-
""",
|
3697
|
-
additionalFiles: [
|
3698
|
-
("Directory.Packages.props", """
|
3699
|
-
<Project>
|
3700
|
-
<PropertyGroup>
|
3701
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
3702
|
-
</PropertyGroup>
|
3703
|
-
<ItemGroup>
|
3704
|
-
<PackageVersion Include="Package1" Version="1.0.0" />
|
3705
|
-
<PackageVersion Include="Package2" Version="2.0.0" />
|
3706
|
-
</ItemGroup>
|
3707
|
-
</Project>
|
3708
|
-
"""),
|
3709
|
-
("NuGet.Config", $"""
|
3710
|
-
<configuration>
|
3711
|
-
<packageSources>
|
3712
|
-
<!-- explicitly _not_ calling "clear" because we also want the upstream sources in addition to these two remote sources -->
|
3713
|
-
<add key="source_1" value="{http1.GetPackageFeedIndex()}" allowInsecureConnections="true" />
|
3714
|
-
<add key="source_2" value="{http2.GetPackageFeedIndex()}" allowInsecureConnections="true" />
|
3715
|
-
</packageSources>
|
3716
|
-
</configuration>
|
3717
|
-
""")
|
3718
|
-
],
|
3719
|
-
expectedProjectContents: """
|
3720
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3721
|
-
<PropertyGroup>
|
3722
|
-
<TargetFramework>net9.0</TargetFramework>
|
3723
|
-
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
3724
|
-
<MSBuildTreatWarningsAsErrors>true</MSBuildTreatWarningsAsErrors>
|
3725
|
-
</PropertyGroup>
|
3726
|
-
<ItemGroup>
|
3727
|
-
<PackageReference Include="Package1" />
|
3728
|
-
<PackageReference Include="Package2" />
|
3729
|
-
</ItemGroup>
|
3730
|
-
</Project>
|
3731
|
-
""",
|
3732
|
-
additionalFilesExpected: [
|
3733
|
-
("Directory.Packages.props", """
|
3734
|
-
<Project>
|
3735
|
-
<PropertyGroup>
|
3736
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
3737
|
-
</PropertyGroup>
|
3738
|
-
<ItemGroup>
|
3739
|
-
<PackageVersion Include="Package1" Version="1.0.1" />
|
3740
|
-
<PackageVersion Include="Package2" Version="2.0.0" />
|
3741
|
-
</ItemGroup>
|
3742
|
-
</Project>
|
3743
|
-
""")
|
3744
|
-
]
|
3745
|
-
);
|
3746
|
-
}
|
3747
|
-
|
3748
|
-
[Fact]
|
3749
|
-
public async Task LegacyProjectWithPackageReferencesCanUpdate()
|
3750
|
-
{
|
3751
|
-
await TestUpdateForProject("Some.Dependency", "1.0.0", "1.0.1",
|
3752
|
-
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
3753
|
-
packages: [
|
3754
|
-
MockNuGetPackage.CreateSimplePackage("Some.Dependency", "1.0.0", "net48"),
|
3755
|
-
MockNuGetPackage.CreateSimplePackage("Some.Dependency", "1.0.1", "net48"),
|
3756
|
-
],
|
3757
|
-
projectContents: """
|
3758
|
-
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
3759
|
-
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
3760
|
-
<PropertyGroup>
|
3761
|
-
<OutputType>Library</OutputType>
|
3762
|
-
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
3763
|
-
</PropertyGroup>
|
3764
|
-
<ItemGroup>
|
3765
|
-
<PackageReference Include="Some.Dependency" Version="1.0.0" />
|
3766
|
-
</ItemGroup>
|
3767
|
-
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
3768
|
-
</Project>
|
3769
|
-
""",
|
3770
|
-
expectedProjectContents: """
|
3771
|
-
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
3772
|
-
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
3773
|
-
<PropertyGroup>
|
3774
|
-
<OutputType>Library</OutputType>
|
3775
|
-
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
3776
|
-
</PropertyGroup>
|
3777
|
-
<ItemGroup>
|
3778
|
-
<PackageReference Include="Some.Dependency" Version="1.0.1" />
|
3779
|
-
</ItemGroup>
|
3780
|
-
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
3781
|
-
</Project>
|
3782
|
-
"""
|
3783
|
-
);
|
3784
|
-
}
|
3785
|
-
|
3786
|
-
[Fact]
|
3787
|
-
public async Task UpdateDependencyWhenUnrelatedDependencyHasWildcardVersion()
|
3788
|
-
{
|
3789
|
-
await TestUpdateForProject("Some.Package", "1.0.0", "1.0.1",
|
3790
|
-
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
3791
|
-
packages: [
|
3792
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net9.0"),
|
3793
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.1", "net9.0"),
|
3794
|
-
MockNuGetPackage.CreateSimplePackage("Unrelated.Package", "2.1.0", "net9.0"),
|
3795
|
-
],
|
3796
|
-
projectContents: """
|
3797
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3798
|
-
<PropertyGroup>
|
3799
|
-
<TargetFramework>net9.0</TargetFramework>
|
3800
|
-
</PropertyGroup>
|
3801
|
-
<ItemGroup>
|
3802
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
3803
|
-
<PackageReference Include="Unrelated.Package" Version="2.*" />
|
3804
|
-
</ItemGroup>
|
3805
|
-
</Project>
|
3806
|
-
""",
|
3807
|
-
expectedProjectContents: """
|
3808
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
3809
|
-
<PropertyGroup>
|
3810
|
-
<TargetFramework>net9.0</TargetFramework>
|
3811
|
-
</PropertyGroup>
|
3812
|
-
<ItemGroup>
|
3813
|
-
<PackageReference Include="Some.Package" Version="1.0.1" />
|
3814
|
-
<PackageReference Include="Unrelated.Package" Version="2.*" />
|
3815
|
-
</ItemGroup>
|
3816
|
-
</Project>
|
3817
|
-
"""
|
3818
|
-
);
|
3819
|
-
}
|
3820
|
-
}
|
3821
|
-
}
|