public void ItFindsTheVersionSpecifiedInGlobalJson() { var environment = new TestEnvironment(_testAssetsManager); environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.97"); var expected = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.98"); environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.99"); environment.CreateGlobalJson(environment.TestDirectory, "99.99.98"); environment.CreateMuxerAndAddToPath(ProgramFiles.X64); var resolver = environment.CreateResolver(); var result = (MockResult)resolver.Resolve( new SdkReference("Some.Test.Sdk", null, null), new MockContext { ProjectFileDirectory = environment.TestDirectory }, new MockFactory()); result.Success.Should().BeTrue(); result.Path.Should().Be(expected.FullName); result.AdditionalPaths.Should().BeNull(); result.Version.Should().Be("99.99.98"); result.Warnings.Should().BeNullOrEmpty(); result.Errors.Should().BeNullOrEmpty(); }
public void ItAllowsPreviewWhenGlobalJsonHasPreviewIrrespectiveOfSetting() { var environment = new TestEnvironment(_testAssetsManager); var rtm = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "10.0.0"); var preview = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "11.0.0-preview1"); environment.CreateMuxerAndAddToPath(ProgramFiles.X64); environment.DisallowPrereleaseByDefault = true; environment.CreateGlobalJson(environment.TestDirectory, "11.0.0-preview1"); var resolver = environment.CreateResolver(); var result = (MockResult)resolver.Resolve( new SdkReference("Some.Test.Sdk", null, null), new MockContext { ProjectFileDirectory = environment.TestDirectory }, new MockFactory()); result.Success.Should().BeTrue(); result.Path.Should().Be(preview.FullName); result.AdditionalPaths.Should().BeNull(); result.Version.Should().Be("11.0.0-preview1"); result.Warnings.Should().BeNullOrEmpty(); result.Errors.Should().BeNullOrEmpty(); }
public void ItDoesNotReturnHighestSdkAvailableThatIsCompatibleWithMSBuildWhenVersionInGlobalJsonCannotBeFoundOutsideOfVisualStudio(bool disallowPreviews) { var environment = new TestEnvironment(_testAssetsManager, callingMethod: "ItDoesNotReturnHighest___", identifier: disallowPreviews.ToString()) { DisallowPrereleaseByDefault = disallowPreviews }; var compatibleRtm = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "98.98.98", new Version(19, 0, 0, 0)); var compatiblePreview = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.99-preview", new Version(20, 0, 0, 0)); var incompatible = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "100.100.100", new Version(21, 0, 0, 0)); environment.CreateMuxerAndAddToPath(ProgramFiles.X64); environment.CreateGlobalJson(environment.TestDirectory, "1.2.3"); var resolver = environment.CreateResolver(); var result = (MockResult)resolver.Resolve( new SdkReference("Some.Test.Sdk", null, null), new MockContext { MSBuildVersion = new Version(20, 0, 0, 0), ProjectFileDirectory = environment.TestDirectory, IsRunningInVisualStudio = false }, new MockFactory()); result.Success.Should().BeFalse(); result.Path.Should().BeNull(); result.AdditionalPaths.Should().BeNull(); result.PropertiesToAdd.Should().BeNull(); result.Version.Should().BeNull(); result.Warnings.Should().BeNullOrEmpty(); result.Errors.Should().NotBeEmpty(); }
public void ItReturnsHighestSdkAvailableThatIsCompatibleWithMSBuildWhenVersionInGlobalJsonCannotBeFoundAndRunningInVisualStudio(bool disallowPreviews) { var environment = new TestEnvironment(_testAssetsManager, callingMethod: "ItReturnsHighest___", identifier: disallowPreviews.ToString()) { DisallowPrereleaseByDefault = disallowPreviews }; var compatibleRtm = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "98.98.98", new Version(19, 0, 0, 0)); var compatiblePreview = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "99.99.99-preview", new Version(20, 0, 0, 0)); var incompatible = environment.CreateSdkDirectory(ProgramFiles.X64, "Some.Test.Sdk", "100.100.100", new Version(21, 0, 0, 0)); environment.CreateMuxerAndAddToPath(ProgramFiles.X64); environment.CreateGlobalJson(environment.TestDirectory, "1.2.3"); var resolver = environment.CreateResolver(); var result = (MockResult)resolver.Resolve( new SdkReference("Some.Test.Sdk", null, null), new MockContext { MSBuildVersion = new Version(20, 0, 0, 0), ProjectFileDirectory = environment.TestDirectory, IsRunningInVisualStudio = true }, new MockFactory()); result.Success.Should().BeTrue(); result.Path.Should().Be((disallowPreviews ? compatibleRtm : compatiblePreview).FullName); result.AdditionalPaths.Should().BeNull(); result.PropertiesToAdd.Count.Should().Be(2); result.PropertiesToAdd.ContainsKey("SdkResolverHonoredGlobalJson"); result.PropertiesToAdd.ContainsKey("SdkResolverGlobalJsonPath"); result.PropertiesToAdd["SdkResolverHonoredGlobalJson"].Should().Be("false"); result.Version.Should().Be(disallowPreviews ? "98.98.98" : "99.99.99-preview"); result.Warnings.Should().BeEquivalentTo(new[] { "Unable to locate the .NET SDK as specified by global.json, please check that the specified version is installed." }); result.Errors.Should().BeNullOrEmpty(); }