2
2
// The .NET Foundation licenses this file to you under the MIT license.
3
3
4
4
using System . CommandLine ;
5
+ using System . Runtime . CompilerServices ;
6
+ using ManifestReaderTests ;
5
7
using Microsoft . Deployment . DotNet . Releases ;
6
8
using Microsoft . DotNet . Cli . NuGetPackageDownloader ;
7
9
using Microsoft . DotNet . Cli . Workload . Install . Tests ;
@@ -23,7 +25,7 @@ public class GivenInstalledWorkloadAndManifestUpdater : SdkTest
23
25
private WorkloadListCommand _workloadListCommand ;
24
26
private string _testDirectory ;
25
27
26
- private List < ManifestUpdateWithWorkloads > _mockManifestUpdates ;
28
+ private List < ( TestManifestUpdate update , WorkloadCollection workloads ) > _mockManifestUpdates ;
27
29
28
30
private MockNuGetPackageDownloader _nugetDownloader ;
29
31
private string _dotnetRoot ;
@@ -32,7 +34,12 @@ public GivenInstalledWorkloadAndManifestUpdater(ITestOutputHelper log) : base(lo
32
34
{
33
35
}
34
36
35
- private void Setup ( string identifier )
37
+ private IEnumerable < ManifestUpdateWithWorkloads > GetManifestUpdatesForMock ( )
38
+ {
39
+ return _mockManifestUpdates . Select ( u => new ManifestUpdateWithWorkloads ( u . update . ToManifestVersionUpdate ( ) , u . workloads ) ) ;
40
+ }
41
+
42
+ private void Setup ( [ CallerMemberName ] string identifier = "" )
36
43
{
37
44
_testDirectory = _testAssetsManager . CreateTestDirectory ( identifier : identifier ) . Path ;
38
45
_dotnetRoot = Path . Combine ( _testDirectory , "dotnet" ) ;
@@ -42,8 +49,10 @@ private void Setup(string identifier)
42
49
_mockManifestUpdates = new ( )
43
50
{
44
51
new (
45
- new ManifestVersionUpdate (
52
+ new TestManifestUpdate (
46
53
new ManifestId ( "manifest1" ) ,
54
+ new ManifestVersion ( CurrentSdkVersion ) ,
55
+ currentSdkFeatureBand . ToString ( ) ,
47
56
new ManifestVersion ( UpdateAvailableVersion ) ,
48
57
currentSdkFeatureBand . ToString ( ) ) ,
49
58
new WorkloadCollection
@@ -56,8 +65,10 @@ private void Setup(string identifier)
56
65
WorkloadDefinitionKind . Dev , null , null , null )
57
66
} ) ,
58
67
new (
59
- new ManifestVersionUpdate (
68
+ new TestManifestUpdate (
60
69
new ManifestId ( "manifest-other" ) ,
70
+ new ManifestVersion ( CurrentSdkVersion ) ,
71
+ currentSdkFeatureBand . ToString ( ) ,
61
72
new ManifestVersion ( "7.0.101" ) ,
62
73
currentSdkFeatureBand . ToString ( ) ) ,
63
74
new WorkloadCollection
@@ -68,8 +79,10 @@ private void Setup(string identifier)
68
79
WorkloadDefinitionKind . Dev , null , null , null )
69
80
} ) ,
70
81
new (
71
- new ManifestVersionUpdate (
82
+ new TestManifestUpdate (
72
83
new ManifestId ( "manifest-older-version" ) ,
84
+ new ManifestVersion ( CurrentSdkVersion ) ,
85
+ currentSdkFeatureBand . ToString ( ) ,
73
86
new ManifestVersion ( "6.0.100" ) ,
74
87
currentSdkFeatureBand . ToString ( ) ) ,
75
88
new WorkloadCollection
@@ -86,21 +99,31 @@ private void Setup(string identifier)
86
99
"dotnet" , "workload" , "list" , "--machine-readable" , InstallingWorkloadCommandParser . VersionOption . Name , "7.0.100"
87
100
} ) ;
88
101
102
+
103
+ var manifestProvider = new MockManifestProvider ( _mockManifestUpdates . Select ( u =>
104
+ {
105
+ string manifestFile = Path . Combine ( _testDirectory , u . update . ManifestId . ToString ( ) + ".json" ) ;
106
+ File . WriteAllText ( manifestFile , GivenWorkloadManifestUpdater . GetManifestContent ( u . update . ExistingVersion ) ) ;
107
+ return ( u . update . ManifestId . ToString ( ) , manifestFile , u . update . ExistingVersion . ToString ( ) , u . update . ExistingFeatureBand . ToString ( ) ) ;
108
+ } ) . ToArray ( ) ) ;
109
+ var workloadResolver = WorkloadResolver . CreateForTests ( manifestProvider , _dotnetRoot ) ;
110
+
89
111
_workloadListCommand = new WorkloadListCommand (
90
112
listParseResult ,
91
113
_reporter ,
92
114
nugetPackageDownloader : _nugetDownloader ,
93
- workloadManifestUpdater : new MockWorkloadManifestUpdater ( _mockManifestUpdates ) ,
115
+ workloadManifestUpdater : new MockWorkloadManifestUpdater ( GetManifestUpdatesForMock ( ) ) ,
94
116
userProfileDir : _testDirectory ,
95
117
currentSdkVersion : CurrentSdkVersion ,
96
118
dotnetDir : _dotnetRoot ,
97
- workloadRecordRepo : new MockMatchingFeatureBandInstallationRecordRepository ( ) ) ;
119
+ workloadRecordRepo : new MockMatchingFeatureBandInstallationRecordRepository ( ) ,
120
+ workloadResolver : workloadResolver ) ;
98
121
}
99
122
100
123
[ Fact ]
101
124
public void ItShouldGetAvailableUpdate ( )
102
125
{
103
- Setup ( nameof ( ItShouldGetAvailableUpdate ) ) ;
126
+ Setup ( ) ;
104
127
WorkloadListCommand . UpdateAvailableEntry [ ] result =
105
128
_workloadListCommand . GetUpdateAvailable ( new List < WorkloadId > { new ( "xamarin-android" ) } ) . ToArray ( ) ;
106
129
@@ -114,7 +137,7 @@ public void ItShouldGetAvailableUpdate()
114
137
[ Fact ]
115
138
public void ItShouldGetListOfWorkloadWithCurrentSdkVersionBand ( )
116
139
{
117
- Setup ( nameof ( ItShouldGetListOfWorkloadWithCurrentSdkVersionBand ) ) ;
140
+ Setup ( ) ;
118
141
_workloadListCommand . Execute ( ) ;
119
142
_reporter . Lines . Should ( ) . Contain ( c => c . Contains ( "\" installed\" :[\" xamarin-android\" ]" ) ) ;
120
143
}
@@ -129,7 +152,7 @@ public void GivenLowerTargetVersionItShouldThrow()
129
152
} ) ,
130
153
_reporter ,
131
154
nugetPackageDownloader : _nugetDownloader ,
132
- workloadManifestUpdater : new MockWorkloadManifestUpdater ( _mockManifestUpdates ) ,
155
+ workloadManifestUpdater : new MockWorkloadManifestUpdater ( null ) ,
133
156
userProfileDir : _testDirectory ,
134
157
currentSdkVersion : CurrentSdkVersion ,
135
158
dotnetDir : _dotnetRoot ,
@@ -149,7 +172,7 @@ public void GivenSameLowerTargetVersionBandItShouldNotThrow()
149
172
} ) ,
150
173
_reporter ,
151
174
nugetPackageDownloader : _nugetDownloader ,
152
- workloadManifestUpdater : new MockWorkloadManifestUpdater ( _mockManifestUpdates ) ,
175
+ workloadManifestUpdater : new MockWorkloadManifestUpdater ( null ) ,
153
176
userProfileDir : _testDirectory ,
154
177
currentSdkVersion : "6.0.101" ,
155
178
dotnetDir : _dotnetRoot ,
0 commit comments