1313using Xunit . Abstractions ;
1414using System ;
1515
16+ [ assembly: CollectionBehavior ( DisableTestParallelization = true ) ]
17+
1618namespace Microsoft . DotNet . Cli . Utils . Tests
1719{
1820 public class GivenAnMSBuildSdkResolver : TestBase
@@ -106,11 +108,59 @@ public void ItReturnsNullWhenTheSDKRequiresAHigherVersionOfMSBuildThanTheOneAvai
106108 }
107109
108110 [ Fact ]
109- public void ItReturnsTheVersionIfItIsEqualToTheMinVersion ( )
111+ public void ItReturnsNullWhenTheDefaultVSRequiredSDKVersionIsHigherThanTheSDKVersionAvailable ( )
112+ {
113+ var environment = new TestEnvironment ( ) ;
114+ var expected =
115+ environment . CreateSdkDirectory ( ProgramFiles . X64 , "Some.Test.Sdk" , "1.0.1" ) ;
116+ environment . CreateMuxerAndAddToPath ( ProgramFiles . X64 ) ;
117+
118+ var resolver = environment . CreateResolver ( ) ;
119+ var result = ( MockResult ) resolver . Resolve (
120+ new SdkReference ( "Some.Test.Sdk" , null , "1.0.0" ) ,
121+ new MockContext { ProjectFilePath = environment . TestDirectory . FullName } ,
122+ new MockFactory ( ) ) ;
123+
124+ result . Success . Should ( ) . BeFalse ( ) ;
125+ result . Path . Should ( ) . BeNull ( ) ;
126+ result . Version . Should ( ) . BeNull ( ) ;
127+ result . Warnings . Should ( ) . BeNullOrEmpty ( ) ;
128+ result . Errors . Should ( ) . Contain ( $ "Version 1.0.1 of the .NET Core SDK is smaller than the minimum version"
129+ + " 1.0.4 required by Visual Studio. Check that a recent enough"
130+ + " .NET Core SDK is installed or increase the version specified in global.json." ) ;
131+ }
132+
133+ [ Fact ]
134+ public void ItReturnsNullWhenTheTheVSRequiredSDKVersionIsHigherThanTheSDKVersionAvailable ( )
135+ {
136+ var environment = new TestEnvironment ( ) ;
137+ var expected =
138+ environment . CreateSdkDirectory ( ProgramFiles . X64 , "Some.Test.Sdk" , "1.0.1" ) ;
139+ environment . CreateMuxerAndAddToPath ( ProgramFiles . X64 ) ;
140+ environment . CreateMinimumVSDefinedSDKVersionFile ( "2.0.0" ) ;
141+
142+ var resolver = environment . CreateResolver ( ) ;
143+ var result = ( MockResult ) resolver . Resolve (
144+ new SdkReference ( "Some.Test.Sdk" , null , "1.0.0" ) ,
145+ new MockContext { ProjectFilePath = environment . TestDirectory . FullName } ,
146+ new MockFactory ( ) ) ;
147+
148+ result . Success . Should ( ) . BeFalse ( ) ;
149+ result . Path . Should ( ) . BeNull ( ) ;
150+ result . Version . Should ( ) . BeNull ( ) ;
151+ result . Warnings . Should ( ) . BeNullOrEmpty ( ) ;
152+ result . Errors . Should ( ) . Contain ( $ "Version 1.0.1 of the .NET Core SDK is smaller than the minimum version"
153+ + " 2.0.0 required by Visual Studio. Check that a recent enough"
154+ + " .NET Core SDK is installed or increase the version specified in global.json." ) ;
155+ }
156+
157+ [ Fact ]
158+ public void ItReturnsTheVersionIfItIsEqualToTheMinVersionAndTheVSDefinedMinVersion ( )
110159 {
111160 var environment = new TestEnvironment ( ) ;
112161 var expected = environment . CreateSdkDirectory ( ProgramFiles . X64 , "Some.Test.Sdk" , "99.99.99" ) ;
113162 environment . CreateMuxerAndAddToPath ( ProgramFiles . X64 ) ;
163+ environment . CreateMinimumVSDefinedSDKVersionFile ( "99.99.99" ) ;
114164
115165 var resolver = environment . CreateResolver ( ) ;
116166 var result = ( MockResult ) resolver . Resolve (
@@ -126,11 +176,12 @@ public void ItReturnsTheVersionIfItIsEqualToTheMinVersion()
126176 }
127177
128178 [ Fact ]
129- public void ItReturnsTheVersionIfItIsHigherThanTheMinVersion ( )
179+ public void ItReturnsTheVersionIfItIsHigherThanTheMinVersionAndTheVSDefinedMinVersion ( )
130180 {
131181 var environment = new TestEnvironment ( ) ;
132182 var expected = environment . CreateSdkDirectory ( ProgramFiles . X64 , "Some.Test.Sdk" , "999.99.99" ) ;
133183 environment . CreateMuxerAndAddToPath ( ProgramFiles . X64 ) ;
184+ environment . CreateMinimumVSDefinedSDKVersionFile ( "999.99.98" ) ;
134185
135186 var resolver = environment . CreateResolver ( ) ;
136187 var result = ( MockResult ) resolver . Resolve (
@@ -167,6 +218,8 @@ public TestEnvironment(string identifier = "", [CallerMemberName] string calling
167218 identifier : identifier ,
168219 callingMethod : callingMethod ) ;
169220
221+ DeleteMinimumVSDefinedSDKVersionFile ( ) ;
222+
170223 PathEnvironmentVariable = string . Empty ;
171224 }
172225
@@ -248,6 +301,22 @@ public string GetEnvironmentVariable(string variable)
248301 return null ;
249302 }
250303 }
304+
305+ public void CreateMinimumVSDefinedSDKVersionFile ( string version )
306+ {
307+ File . WriteAllText ( GetMinimumVSDefinedSDKVersionFilePath ( ) , version ) ;
308+ }
309+
310+ private void DeleteMinimumVSDefinedSDKVersionFile ( )
311+ {
312+ File . Delete ( GetMinimumVSDefinedSDKVersionFilePath ( ) ) ;
313+ }
314+
315+ private string GetMinimumVSDefinedSDKVersionFilePath ( )
316+ {
317+ string baseDirectory = AppContext . BaseDirectory ;
318+ return Path . Combine ( baseDirectory , "minimumVSDefinedSDKVersion" ) ;
319+ }
251320 }
252321
253322 private sealed class MockContext : SdkResolverContext
0 commit comments