File: GivenThatWeWantToPublishAToolProject.cs
Web Access
Project: ..\..\..\test\Microsoft.NET.Publish.Tests\Microsoft.NET.Publish.Tests.csproj (Microsoft.NET.Publish.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
 
using System.Runtime.CompilerServices;
using Microsoft.DotNet.Cli.Utils;
 
namespace Microsoft.NET.Publish.Tests
{
    public class GivenThatWeWantToPublishAToolProject : SdkTest
    {
 
        public static string HostfxrName =
                RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "hostfxr.dll" :
                RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? "libhostfxr.so" :
                "libhostfxr.dylib";
 
        public GivenThatWeWantToPublishAToolProject(ITestOutputHelper log) : base(log)
        {
        }
 
        private TestAsset SetupTestAsset([CallerMemberName] string callingMethod = "")
        {
            TestAsset helloWorldAsset = _testAssetsManager
                .CopyTestAsset("PortableTool", callingMethod)
                .WithSource();
 
 
            return helloWorldAsset;
        }
 
        [Fact]
        // this test verifies that we don't regress the 'normal' publish experience accidentally in the
        // PackTool.targets
        public void It_can_publish_and_has_apphost()
        {
            var testAsset = SetupTestAsset();
            var publishCommand = new PublishCommand(testAsset);
 
            publishCommand.Execute();
 
            publishCommand.GetOutputDirectory(targetFramework: ToolsetInfo.CurrentTargetFramework)
                .Should().HaveFile("consoledemo" + Constants.ExeSuffix);
        }
 
        [Fact]
        // this test verifies that we don't regress the 'normal' publish experience accidentally in the
        // PackTool.targets
        public void It_can_publish_selfcontained_and_has_apphost()
        {
            var testAsset = SetupTestAsset().SetProjProperty("PublishSelfContained", "true");
            var publishCommand = new PublishCommand(testAsset);
 
            var binlogDestPath = Environment.GetEnvironmentVariable("HELIX_WORKITEM_UPLOAD_ROOT") is { } ciOutputRoot ?
                Path.Combine(ciOutputRoot, "binlog", $"{nameof(It_can_publish_selfcontained_and_has_apphost)}.binlog") :
                "./msbuild.binlog";
 
            publishCommand.WithWorkingDirectory(testAsset.Path).Execute($"-bl:{binlogDestPath}");
 
            publishCommand.GetOutputDirectory(targetFramework: ToolsetInfo.CurrentTargetFramework, runtimeIdentifier: System.Runtime.InteropServices.RuntimeInformation.RuntimeIdentifier)
                .Should().HaveFile("consoledemo" + Constants.ExeSuffix)
                .And.HaveFile(HostfxrName);
        }
    }
}