File: GivenThatWeWantToTargetNotRecommendedFrameworks.cs
Web Access
Project: ..\..\..\test\Microsoft.NET.Build.Tests\Microsoft.NET.Build.Tests.csproj (Microsoft.NET.Build.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
#nullable disable
 
namespace Microsoft.NET.Build.Tests
{
    public class GivenThatWeWantToTargetNotRecommendedFrameworks : SdkTest
    {
        public GivenThatWeWantToTargetNotRecommendedFrameworks(ITestOutputHelper log) : base(log)
        {
        }
 
        [Theory]
        [InlineData("NetStandard1.0")]
        [InlineData("NetStandard1.1")]
        [InlineData("NetStandard1.2")]
        [InlineData("NetStandard1.3")]
        [InlineData("NetStandard1.4")]
        [InlineData("NetStandard1.5")]
        [InlineData("NetStandard1.6")]
        public void It_warns_that_framework_is_not_recommended(string targetFrameworks)
        {
            var testProject = new TestProject()
            {
                Name = $"NotRecommended{targetFrameworks}",
                TargetFrameworks = targetFrameworks,
                IsExe = false
            };
 
            var testAsset = _testAssetsManager.CreateTestProject(testProject);
 
            var buildCommand = new BuildCommand(testAsset);
 
            var result = buildCommand
                .Execute();
 
            result
                .Should()
                .Pass()
                .And
                .HaveStdOutContaining("NETSDK1215");
        }
 
        [Theory]
        [InlineData("NetStandard2.0")]
        [InlineData("NetStandard2.1")]
        public void It_should_not_warn_when_framework_not_recommended(string targetFrameworks)
        {
            var testProject = new TestProject()
            {
                Name = $"NotRecommended{targetFrameworks}",
                TargetFrameworks = targetFrameworks,
                IsExe = false
            };
 
            var testAsset = _testAssetsManager.CreateTestProject(testProject);
 
            var buildCommand = new BuildCommand(testAsset);
 
            var result = buildCommand
                .Execute();
 
            result
                .Should()
                .Pass()
                .And
                .NotHaveStdOutContaining("NETSDK1215");
        }
 
        [Fact]
        public void It_only_checks_for_netcoreapp_not_recommended_frameworks()
        {
            var testProject = new TestProject()
            {
                Name = $"NotRecommendedOnlyNetCore",
                TargetFrameworks = $"netstandard1.6;{ToolsetInfo.CurrentTargetFramework};net472",
                IsExe = false,
            };
 
            var testAsset = _testAssetsManager.CreateTestProject(testProject);
 
            var buildCommand = new BuildCommand(testAsset);
 
            var result = buildCommand
                .Execute();
 
            var lines = (result.StdOut.Split(Environment.NewLine)).Where(line => line.Contains("NETSDK1215"));
 
            Assert.NotNull(lines.FirstOrDefault(line => line.IndexOf("netstandard1.6") >= 0));
            Assert.All(lines, line => Assert.DoesNotContain(ToolsetInfo.CurrentTargetFramework, line));
            Assert.All(lines, line => Assert.DoesNotContain("net472", line));
        }
 
        [Fact]
        public void It_does_not_warn_when_deactivating_check()
        {
            var testProject = new TestProject()
            {
                Name = $"NotRecommendedNoWarning",
                TargetFrameworks = "netstandard1.6",
                IsExe = false
            };
 
            testProject.AdditionalProperties["CheckNotRecommendedTargetFramework"] = "false";
 
            var testAsset = _testAssetsManager.CreateTestProject(testProject);
 
            var buildCommand = new BuildCommand(testAsset);
 
            var result = buildCommand
                .Execute();
 
            result
                .Should()
                .Pass()
                .And
                .NotHaveStdOutContaining("NETSDK1215");
        }
    }
}