File: PublishDepsFilePathTests.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
 
namespace Microsoft.NET.Publish.Tests
{
    public class PublishDepsFilePathTests : SdkTest
    {
        public PublishDepsFilePathTests(ITestOutputHelper log) : base(log)
        {
        }
 
        [Fact]
        public void PublishDepsFilePathIsSetAsExpectedForNormalApps()
        {
            var testProject = SetupProject(singleFile: false);
            var testAsset = _testAssetsManager.CreateTestProject(testProject);
 
            var projectPath = Path.Combine(testAsset.Path, testProject.Name);
            var targetFramework = testProject.TargetFrameworks;
 
            var publishDir = GetPropertyValue(projectPath, targetFramework, "PublishDir");
            var projectDepsFileName = GetPropertyValue(projectPath, targetFramework, "ProjectDepsFileName");
            var publishDepsFilePath = GetPropertyValue(projectPath, targetFramework, "PublishDepsFilePath");
            var expectedDepsFilePath = $"{publishDir}{projectDepsFileName}";
 
            publishDepsFilePath.Should().Be(expectedDepsFilePath);
        }
 
        [Fact]
        public void PublishDepsFilePathIsEmptyForSingleFileApps()
        {
            var testProject = SetupProject(singleFile: true);
            var testAsset = _testAssetsManager.CreateTestProject(testProject);
            var restoreCommand = new RestoreCommand(testAsset);
            restoreCommand
                .Execute()
                .Should()
                .Pass();
 
            var projectPath = Path.Combine(testAsset.Path, testProject.Name);
            var targetFramework = testProject.TargetFrameworks;
            var publishDepsFilePath = GetPropertyValue(projectPath, targetFramework, "PublishDepsFilePath");
 
            string.IsNullOrEmpty(publishDepsFilePath).Should().BeTrue();
        }
 
        string GetPropertyValue(string projectPath, string targetFramework, string property)
        {
            var getValuesCommand = new GetValuesCommand(Log, projectPath, targetFramework, property)
            {
                DependsOnTargets = "GeneratePublishDependencyFile"
            };
 
            getValuesCommand
                .Execute()
                .Should()
                .Pass();
 
            var values = getValuesCommand.GetValues();
 
            return values.Any() ? values.Single() : null;
        }
 
        private TestProject SetupProject(bool singleFile)
        {
            var testProject = new TestProject()
            {
                Name = "TestsPublishDepsFilePath",
                TargetFrameworks = ToolsetInfo.CurrentTargetFramework,
                IsExe = true
            };
 
            testProject.AdditionalProperties["RuntimeIdentifiers"] = "win-x64";
            testProject.AdditionalProperties["RestorePackagesPath"] = @"$(MSBuildProjectDirectory)\..\pkg";
 
            if (singleFile)
            {
                testProject.AdditionalProperties["PublishSingleFile"] = "true";
            }
 
            return testProject;
        }
    }
}