6
6
using System . IO ;
7
7
using System . Linq ;
8
8
using System . Text ;
9
+ using System . Text . Json ;
9
10
using System . Threading . Tasks ;
10
11
using Microsoft . DotNet . MsiInstallerTests . Framework ;
11
12
using Microsoft . NET . Sdk . WorkloadManifestReader ;
@@ -17,8 +18,24 @@ public class WorkloadSetTests : VMTestBase
17
18
{
18
19
readonly string SdkTestingDirectory = @"C:\SdkTesting" ;
19
20
21
+
22
+ Lazy < Dictionary < string , string > > _testWorkloadSetVersions ;
23
+ string WorkloadSetVersion1 => _testWorkloadSetVersions . Value . GetValueOrDefault ( "version1" , "8.0.300-preview.0.24178.1" ) ;
24
+ string WorkloadSetVersion2 => _testWorkloadSetVersions . Value . GetValueOrDefault ( "version2" , "8.0.300-preview.0.24217.2" ) ;
25
+ string WorkloadSetPreviousBandVersion => _testWorkloadSetVersions . Value . GetValueOrDefault ( "previousbandversion" , "8.0.204" ) ;
26
+
20
27
public WorkloadSetTests ( ITestOutputHelper log ) : base ( log )
21
28
{
29
+ _testWorkloadSetVersions = new Lazy < Dictionary < string , string > > ( ( ) =>
30
+ {
31
+ var versionsFile = VM . GetRemoteFile ( @"c:\SdkTesting\workloadsets\testworkloadsetversions.json" ) ;
32
+ if ( ! versionsFile . Exists )
33
+ {
34
+ return new Dictionary < string , string > ( ) ;
35
+ }
36
+
37
+ return JsonSerializer . Deserialize < Dictionary < string , string > > ( versionsFile . ReadAllText ( ) ) ;
38
+ } ) ;
22
39
}
23
40
24
41
[ Fact ]
@@ -91,7 +108,7 @@ public void UpdateWithWorkloadSets()
91
108
92
109
newRollback . ManifestVersions . Should ( ) . NotBeEquivalentTo ( rollbackAfterUpdate . ManifestVersions ) ;
93
110
94
- GetWorkloadVersion ( ) . Should ( ) . Be ( "8.0.300-preview.0.24217.2" ) ;
111
+ GetWorkloadVersion ( ) . Should ( ) . Be ( WorkloadSetVersion2 ) ;
95
112
}
96
113
97
114
[ Fact ]
@@ -113,10 +130,19 @@ public void UpdateInWorkloadSetModeWithNoAvailableWorkloadSet()
113
130
GetWorkloadVersion ( ) . Should ( ) . Be ( updatedWorkloadVersion ) ;
114
131
}
115
132
116
- [ Theory ]
117
- [ InlineData ( "8.0.300-preview.0.24178.1" ) ]
118
- [ InlineData ( "8.0.204" ) ]
119
- public void UpdateToSpecificWorkloadSetVersion ( string versionToInstall )
133
+ [ Fact ]
134
+ public void UpdateToSpecificWorkloadSetVersion ( )
135
+ {
136
+ UpdateToWorkloadSetVersion ( WorkloadSetVersion1 ) ;
137
+ }
138
+
139
+ [ Fact ]
140
+ public void UpdateToPreviousBandWorkloadSetVersion ( )
141
+ {
142
+ UpdateToWorkloadSetVersion ( WorkloadSetPreviousBandVersion ) ;
143
+ }
144
+
145
+ private void UpdateToWorkloadSetVersion ( string versionToInstall )
120
146
{
121
147
InstallSdk ( ) ;
122
148
@@ -148,7 +174,7 @@ public void UpdateToSpecificWorkloadSetVersion(string versionToInstall)
148
174
. Should ( )
149
175
. Pass ( ) ;
150
176
151
- GetWorkloadVersion ( ) . Should ( ) . Be ( "8.0.300-preview.0.24217.2" ) ;
177
+ GetWorkloadVersion ( ) . Should ( ) . Be ( WorkloadSetVersion2 ) ;
152
178
}
153
179
154
180
[ Fact ]
@@ -189,8 +215,7 @@ public void UpdateWorkloadSetWithoutAvailableManifests()
189
215
VM . CreateRunCommand ( "dotnet" , "workload" , "update" , "--source" , @"c:\SdkTesting\workloadsets" )
190
216
. Execute ( )
191
217
. Should ( )
192
- . Pass ( )
193
- . And . HaveStdOutContaining ( "No workload update found" ) ;
218
+ . Fail ( ) ;
194
219
195
220
VM . CreateRunCommand ( "dotnet" , "workload" , "search" )
196
221
. WithIsReadOnly ( true )
@@ -208,7 +233,7 @@ public void UpdateToWorkloadSetVersionWithManifestsNotAvailable()
208
233
209
234
var workloadVersionBeforeUpdate = GetWorkloadVersion ( ) ;
210
235
211
- VM . CreateRunCommand ( "dotnet" , "workload" , "update" , "--version" , @"8.0.300-preview.0.24217.2" , "--source" , @"c:\SdkTesting\workloadsets" )
236
+ VM . CreateRunCommand ( "dotnet" , "workload" , "update" , "--version" , WorkloadSetVersion2 , "--source" , @"c:\SdkTesting\workloadsets" )
212
237
. Execute ( )
213
238
. Should ( )
214
239
. Fail ( ) ;
@@ -226,7 +251,7 @@ void SetupWorkloadSetInGlobalJson(out WorkloadSet originalRollback)
226
251
{
227
252
InstallSdk ( ) ;
228
253
229
- var versionToUpdateTo = "8.0.300-preview.0.24217.2" ;
254
+ var versionToUpdateTo = WorkloadSetVersion2 ;
230
255
231
256
string originalVersion = GetWorkloadVersion ( ) ;
232
257
@@ -287,7 +312,7 @@ public void InstallWithVersionAndSkipManifestUpdate()
287
312
{
288
313
InstallSdk ( ) ;
289
314
290
- VM . CreateRunCommand ( "dotnet" , "workload" , "install" , "aspire" , "--skip-manifest-update" , "--version" , "8.0.300-preview.0.24178.1" )
315
+ VM . CreateRunCommand ( "dotnet" , "workload" , "install" , "aspire" , "--skip-manifest-update" , "--version" , WorkloadSetVersion1 )
291
316
. Execute ( ) . Should ( ) . Fail ( )
292
317
. And . HaveStdErrContaining ( "--skip-manifest-update" )
293
318
. And . HaveStdErrContaining ( "--sdk-version" ) ;
@@ -301,17 +326,17 @@ public void InstallWithVersionWhenPinned()
301
326
AddNuGetSource ( @"c:\SdkTesting\WorkloadSets" ) ;
302
327
303
328
string originalVersion = GetWorkloadVersion ( ) ;
304
- originalVersion . Should ( ) . NotBe ( "8.0.300-preview.0.24178.1" ) ;
329
+ originalVersion . Should ( ) . NotBe ( WorkloadSetVersion1 ) ;
305
330
306
- VM . CreateRunCommand ( "dotnet" , "workload" , "update" , "--version" , "8.0.300-preview.0.24178.1" )
331
+ VM . CreateRunCommand ( "dotnet" , "workload" , "update" , "--version" , WorkloadSetVersion1 )
307
332
. Execute ( ) . Should ( ) . Pass ( ) ;
308
333
309
- GetWorkloadVersion ( ) . Should ( ) . Be ( "8.0.300-preview.0.24178.1" ) ;
334
+ GetWorkloadVersion ( ) . Should ( ) . Be ( WorkloadSetVersion1 ) ;
310
335
311
- VM . CreateRunCommand ( "dotnet" , "workload" , "install" , "aspire" , "--version" , "8.0.300-preview.0.24217.2" )
336
+ VM . CreateRunCommand ( "dotnet" , "workload" , "install" , "aspire" , "--version" , WorkloadSetVersion2 )
312
337
. Execute ( ) . Should ( ) . Pass ( ) ;
313
338
314
- GetWorkloadVersion ( ) . Should ( ) . Be ( "8.0.300-preview.0.24217.2" ) ;
339
+ GetWorkloadVersion ( ) . Should ( ) . Be ( WorkloadSetVersion2 ) ;
315
340
}
316
341
317
342
[ Fact ]
@@ -322,18 +347,18 @@ public void InstallWithGlobalJsonWhenPinned()
322
347
//AddNuGetSource(@"c:\SdkTesting\WorkloadSets");
323
348
324
349
string originalVersion = GetWorkloadVersion ( ) ;
325
- originalVersion . Should ( ) . NotBe ( "8.0.300-preview.0.24178.1" ) ;
350
+ originalVersion . Should ( ) . NotBe ( WorkloadSetVersion1 ) ;
326
351
327
- VM . CreateRunCommand ( "dotnet" , "workload" , "update" , "--version" , "8.0.300-preview.0.24178.1" )
352
+ VM . CreateRunCommand ( "dotnet" , "workload" , "update" , "--version" , WorkloadSetVersion1 )
328
353
. Execute ( ) . Should ( ) . Pass ( ) ;
329
354
330
- GetWorkloadVersion ( ) . Should ( ) . Be ( "8.0.300-preview.0.24178.1" ) ;
355
+ GetWorkloadVersion ( ) . Should ( ) . Be ( WorkloadSetVersion1 ) ;
331
356
332
357
VM . CreateRunCommand ( "dotnet" , "workload" , "install" , "aspire" )
333
358
. WithWorkingDirectory ( SdkTestingDirectory )
334
359
. Execute ( ) . Should ( ) . Pass ( ) ;
335
360
336
- GetWorkloadVersion ( SdkTestingDirectory ) . Should ( ) . Be ( "8.0.300-preview.0.24217.2" ) ;
361
+ GetWorkloadVersion ( SdkTestingDirectory ) . Should ( ) . Be ( WorkloadSetVersion2 ) ;
337
362
338
363
GetRollback ( SdkTestingDirectory ) . Should ( ) . NotBe ( originalRollback ) ;
339
364
@@ -347,22 +372,28 @@ public void UpdateShouldNotPinWorkloadSet()
347
372
348
373
AddNuGetSource ( @"c:\SdkTesting\WorkloadSets" ) ;
349
374
375
+ var packageVersion = WorkloadSet . WorkloadSetVersionToWorkloadSetPackageVersion ( WorkloadSetVersion2 , out var sdkFeatureBand ) ;
376
+
350
377
// Rename latest workload set so it won't be installed
351
- VM . CreateRunCommand ( "cmd" , "/c" , "ren" , @$ "c:\SdkTesting\WorkloadSets\Microsoft.NET.Workloads.8.0.300-preview.*.24217.2.nupkg", $ "Microsoft.NET.Workloads.8.0.300-preview.*.24217.2.bak")
378
+ VM . CreateActionGroup ( $ "Disable { WorkloadSetVersion2 } ",
379
+ VM . CreateRunCommand ( "cmd" , "/c" , "ren" , @$ "c:\SdkTesting\WorkloadSets\Microsoft.NET.Workloads.{ sdkFeatureBand } .{ packageVersion } .nupkg", $ "Microsoft.NET.Workloads.{ sdkFeatureBand } .{ packageVersion } .bak") ,
380
+ VM . CreateRunCommand ( "cmd" , "/c" , "ren" , @$ "c:\SdkTesting\WorkloadSets\Microsoft.NET.Workloads.{ sdkFeatureBand } .*.{ packageVersion } .nupkg", $ "Microsoft.NET.Workloads.{ sdkFeatureBand } .*.{ packageVersion } .bak") )
352
381
. Execute ( ) . Should ( ) . Pass ( ) ;
353
382
354
383
VM . CreateRunCommand ( "dotnet" , "workload" , "update" )
355
384
. Execute ( ) . Should ( ) . Pass ( ) ;
356
385
357
- GetWorkloadVersion ( ) . Should ( ) . Be ( "8.0.300-preview.0.24178.1" ) ;
386
+ GetWorkloadVersion ( ) . Should ( ) . Be ( WorkloadSetVersion1 ) ;
358
387
359
388
// Bring latest workload set version back, so installing workload should update to it
360
- VM . CreateRunCommand ( "cmd" , "/c" , "ren" , @$ "c:\SdkTesting\WorkloadSets\Microsoft.NET.Workloads.8.0.300-preview.*.24217.2.bak", $ "Microsoft.NET.Workloads.8.0.300-preview.*.24217.2.nupkg")
389
+ VM . CreateActionGroup ( $ "Enable { WorkloadSetVersion2 } ",
390
+ VM . CreateRunCommand ( "cmd" , "/c" , "ren" , @$ "c:\SdkTesting\WorkloadSets\Microsoft.NET.Workloads.{ sdkFeatureBand } .{ packageVersion } .bak", $ "Microsoft.NET.Workloads.{ sdkFeatureBand } .{ packageVersion } .nupkg") ,
391
+ VM . CreateRunCommand ( "cmd" , "/c" , "ren" , @$ "c:\SdkTesting\WorkloadSets\Microsoft.NET.Workloads.{ sdkFeatureBand } .*.{ packageVersion } .bak", $ "Microsoft.NET.Workloads.{ sdkFeatureBand } .*.{ packageVersion } .nupkg") )
361
392
. Execute ( ) . Should ( ) . Pass ( ) ;
362
393
363
394
InstallWorkload ( "aspire" , skipManifestUpdate : false ) ;
364
395
365
- GetWorkloadVersion ( ) . Should ( ) . Be ( "8.0.300-preview.0.24217.2" ) ;
396
+ GetWorkloadVersion ( ) . Should ( ) . Be ( WorkloadSetVersion2 ) ;
366
397
}
367
398
368
399
[ Fact ]
0 commit comments