|
3 | 3 |
|
4 | 4 | using System;
|
5 | 5 | using System.Collections.Generic;
|
| 6 | +using System.IO; |
6 | 7 | using System.Linq;
|
7 | 8 | using System.Text;
|
8 | 9 | using System.Threading.Tasks;
|
9 | 10 | using Microsoft.DotNet.MsiInstallerTests.Framework;
|
10 | 11 | using Microsoft.NET.Sdk.WorkloadManifestReader;
|
| 12 | +using Microsoft.TemplateEngine.Abstractions.Mount; |
11 | 13 |
|
12 | 14 | namespace Microsoft.DotNet.MsiInstallerTests
|
13 | 15 | {
|
14 | 16 | public class WorkloadSetTests : VMTestBase
|
15 | 17 | {
|
| 18 | + readonly string SdkTestingDirectory = @"C:\SdkTesting"; |
| 19 | + |
16 | 20 | public WorkloadSetTests(ITestOutputHelper log) : base(log)
|
17 | 21 | {
|
18 | 22 | }
|
@@ -218,49 +222,76 @@ public void UpdateToWorkloadSetVersionWithManifestsNotAvailable()
|
218 | 222 | GetWorkloadVersion().Should().Be(workloadVersionBeforeUpdate);
|
219 | 223 | }
|
220 | 224 |
|
221 |
| - [Fact] |
222 |
| - public void UpdateWorkloadSetViaGlobalJson() |
| 225 | + void SetupWorkloadSetInGlobalJson(out WorkloadSet originalRollback) |
223 | 226 | {
|
224 | 227 | InstallSdk();
|
225 | 228 |
|
226 | 229 | var versionToUpdateTo = "8.0.300-preview.0.24217.2";
|
227 |
| - var directory = "C:\\SdkTesting"; |
228 | 230 |
|
229 | 231 | string originalVersion = GetWorkloadVersion();
|
230 | 232 |
|
231 |
| - var rollback = GetRollback(directory); |
| 233 | + originalRollback = GetRollback(SdkTestingDirectory); |
232 | 234 |
|
233 | 235 | VM.WriteFile("C:\\SdkTesting\\global.json", @$"{{""sdk"":{{""workloadVersion"":""{versionToUpdateTo}""}}}}").Execute().Should().Pass();
|
234 | 236 |
|
235 |
| - GetWorkloadVersion(directory).Should().Be(versionToUpdateTo); |
| 237 | + GetWorkloadVersion(SdkTestingDirectory).Should().Be(versionToUpdateTo); |
236 | 238 |
|
237 | 239 | // The version should have changed but not yet the manifests. Since we expect both, getting the rollback should fail.
|
238 | 240 | var result = VM.CreateRunCommand("dotnet", "workload", "update", "--print-rollback")
|
239 |
| - .WithWorkingDirectory(directory) |
| 241 | + .WithWorkingDirectory(SdkTestingDirectory) |
240 | 242 | .WithIsReadOnly(true)
|
241 | 243 | .Execute();
|
242 | 244 |
|
243 | 245 | result.Should().Fail();
|
244 | 246 | result.StdErr.Should().Contain("FileNotFoundException");
|
245 | 247 | result.StdErr.Should().Contain(versionToUpdateTo);
|
246 | 248 |
|
247 |
| - AddNuGetSource(@"C:\SdkTesting\workloadsets", directory); |
| 249 | + AddNuGetSource(@"C:\SdkTesting\workloadsets", SdkTestingDirectory); |
| 250 | + |
| 251 | + } |
248 | 252 |
|
249 |
| - VM.CreateRunCommand("dotnet", "workload", "update").WithWorkingDirectory(directory).Execute().Should().Pass(); |
| 253 | + [Fact] |
| 254 | + public void UpdateWorkloadSetViaGlobalJson() |
| 255 | + { |
| 256 | + SetupWorkloadSetInGlobalJson(out var originalRollback); |
250 | 257 |
|
251 |
| - GetRollback(directory).Should().NotBe(rollback); |
| 258 | + VM.CreateRunCommand("dotnet", "workload", "update").WithWorkingDirectory(SdkTestingDirectory).Execute().Should().Pass(); |
| 259 | + GetRollback(SdkTestingDirectory).Should().NotBe(originalRollback); |
252 | 260 | }
|
253 | 261 |
|
254 |
| - string GetWorkloadVersion(string workingDirectory = null) |
| 262 | + [Fact] |
| 263 | + public void InstallWorkloadSetViaGlobalJson() |
255 | 264 | {
|
256 |
| - var result = VM.CreateRunCommand("dotnet", "workload", "--version") |
257 |
| - .WithWorkingDirectory(workingDirectory) |
258 |
| - .WithIsReadOnly(true) |
259 |
| - .Execute(); |
| 265 | + SetupWorkloadSetInGlobalJson(out var originalRollback); |
260 | 266 |
|
261 |
| - result.Should().Pass(); |
| 267 | + VM.CreateRunCommand("dotnet", "workload", "install", "aspire") |
| 268 | + .WithWorkingDirectory(SdkTestingDirectory) |
| 269 | + .Execute().Should().Pass(); |
262 | 270 |
|
263 |
| - return result.StdOut; |
| 271 | + GetRollback(SdkTestingDirectory).Should().NotBe(originalRollback); |
| 272 | + } |
| 273 | + |
| 274 | + [Fact] |
| 275 | + public void InstallWithGlobalJsonAndSkipManifestUpdate() |
| 276 | + { |
| 277 | + SetupWorkloadSetInGlobalJson(out var originalRollback); |
| 278 | + |
| 279 | + VM.CreateRunCommand("dotnet", "workload", "install", "aspire", "--skip-manifest-update") |
| 280 | + .WithWorkingDirectory(SdkTestingDirectory) |
| 281 | + .Execute().Should().Fail() |
| 282 | + .And.HaveStdErrContaining("--skip-manifest-update") |
| 283 | + .And.HaveStdErrContaining(Path.Combine(SdkTestingDirectory, "global.json")); |
| 284 | + } |
| 285 | + |
| 286 | + [Fact] |
| 287 | + public void InstallWithVersionAndSkipManifestUpdate() |
| 288 | + { |
| 289 | + InstallSdk(); |
| 290 | + |
| 291 | + VM.CreateRunCommand("dotnet", "workload", "install", "aspire", "--skip-manifest-update", "--version", "8.0.300-preview.0.24178.1") |
| 292 | + .Execute().Should().Fail() |
| 293 | + .And.HaveStdErrContaining("--skip-manifest-update") |
| 294 | + .And.HaveStdErrContaining("--sdk-version"); |
264 | 295 | }
|
265 | 296 |
|
266 | 297 | [Fact]
|
@@ -305,6 +336,17 @@ public void TurnOffWorkloadSetUpdateMode()
|
305 | 336 | throw new NotImplementedException();
|
306 | 337 | }
|
307 | 338 |
|
| 339 | + string GetWorkloadVersion(string workingDirectory = null) |
| 340 | + { |
| 341 | + var result = VM.CreateRunCommand("dotnet", "workload", "--version") |
| 342 | + .WithWorkingDirectory(workingDirectory) |
| 343 | + .WithIsReadOnly(true) |
| 344 | + .Execute(); |
| 345 | + |
| 346 | + result.Should().Pass(); |
| 347 | + |
| 348 | + return result.StdOut; |
| 349 | + } |
308 | 350 | string GetUpdateMode()
|
309 | 351 | {
|
310 | 352 | var result = VM.CreateRunCommand("dotnet", "workload", "config", "--update-mode")
|
|
0 commit comments