Пример #1
0
        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();
        }
Пример #2
0
        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();
        }
Пример #3
0
        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();
        }
Пример #4
0
        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();
        }