File: GivenThatWeWantToIgnoreObsoleteDotNetCliToolPackages.cs
Web Access
Project: ..\..\..\test\Microsoft.NET.Restore.Tests\Microsoft.NET.Restore.Tests.csproj (Microsoft.NET.Restore.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.Restore.Tests
{
    public class GivenThatWeWantToIgnoreObsoleteDotNetCliToolPackages : SdkTest
    {
        public GivenThatWeWantToIgnoreObsoleteDotNetCliToolPackages(ITestOutputHelper log) : base(log)
        {
        }
 
        [Fact]
        public void It_issues_warning_and_skips_restore_for_obsolete_DotNetCliToolReference()
        {
            const string obsoletePackageId = "Banana.CommandLineTool";
 
            TestProject toolProject = new()
            {
                Name = "ObsoleteCliToolRefRestoreProject",
                TargetFrameworks = "netstandard2.0",
            };
 
            toolProject.DotNetCliToolReferences.Add(new TestPackageReference(obsoletePackageId, "99.99.99", null));
 
            TestAsset toolProjectInstance = _testAssetsManager.CreateTestProject(toolProject, identifier: toolProject.Name)
                .WithProjectChanges(project =>
                {
                    XNamespace ns = project.Root.Name.Namespace;
 
                    var itemGroup = new XElement(ns + "ItemGroup");
                    project.Root.Add(itemGroup);
 
                    itemGroup.Add(new XElement(ns + "BundledDotNetCliToolReference",
                        new XAttribute("Include", obsoletePackageId)));
                });
 
            NuGetConfigWriter.Write(toolProjectInstance.TestRoot);
 
            RestoreCommand restoreCommand = toolProjectInstance.GetRestoreCommand(Log, toolProject.Name);
            restoreCommand.Execute("/v:n").Should()
                .Pass()
                .And
                .HaveStdOutContaining($"warning NETSDK1059: The tool '{obsoletePackageId}' is now included in the .NET SDK. Information on resolving this warning is available at (https://aka.ms/dotnetclitools-in-box).");
 
            string toolAssetsFilePath = Path.Combine(TestContext.Current.NuGetCachePath, ".tools", toolProject.Name.ToLowerInvariant(), "99.99.99", toolProject.TargetFrameworks, "project.assets.json");
            Assert.False(File.Exists(toolAssetsFilePath), "Tool assets path should not have been generated");
        }
    }
}