File: ShellShimTests\AppHostShellShimMakerTests.cs
Web Access
Project: ..\..\..\test\dotnet.Tests\dotnet.Tests.csproj (dotnet.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.DotNet.Cli.ShellShim;
using Microsoft.Extensions.EnvironmentAbstractions;
using Microsoft.NET.HostModel.AppHost;
 
namespace Microsoft.DotNet.ShellShim.Tests
{
    public class AppHostShellShimMakerTests : SdkTest
    {
        const ushort WindowsGUISubsystem = 0x2;
 
        public AppHostShellShimMakerTests(ITestOutputHelper log) : base(log)
        {
        }
 
        [WindowsOnlyFact]
        public void WhenCallWithWpfDllItCanCreateShimWithWindowsGraphicalUserInterfaceBitSet()
        {
            string shimPath = CreateApphostAndReturnShimPath();
 
            PEUtils.GetWindowsGraphicalUserInterfaceBit(shimPath).Should().Be(WindowsGUISubsystem);
        }
 
        [UnixOnlyFact]
        public void GivenNonWindowsMachineWhenCallWithWpfDllItCanCreateShimWithoutThrow()
        {
            Action a = () => CreateApphostAndReturnShimPath();
            a.Should().NotThrow("It should skip copying PE bits without throw");
        }
 
        private static string CreateApphostAndReturnShimPath()
        {
            var tempDirectory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            Directory.CreateDirectory(tempDirectory);
            var appHostShellShimMaker = new AppHostShellShimMaker(Path.Combine(TestContext.Current.ToolsetUnderTest.SdkFolderUnderTest, "AppHostTemplate"));
            string shimPath = Path.Combine(tempDirectory, Path.GetRandomFileName());
 
            appHostShellShimMaker.CreateApphostShellShim(
                new FilePath(Path.GetFullPath(Path.Combine("WpfBinaryTestAssets", "testwpf.dll"))),
                new FilePath(shimPath));
            return shimPath;
        }
    }
}