dotnet-installer/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateWebProjects.cs

64 lines
2.3 KiB
C#
Raw Normal View History

// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Microsoft.Build.Construction;
using Microsoft.DotNet.Tools.Test.Utilities;
using System.Linq;
using Xunit;
using FluentAssertions;
using Microsoft.DotNet.ProjectJsonMigration;
using Microsoft.DotNet.ProjectJsonMigration.Rules;
using System;
using System.IO;
namespace Microsoft.DotNet.ProjectJsonMigration.Tests
{
public class GivenThatIWantToMigrateWebProjects : PackageDependenciesTestBase
{
[Fact]
public void ItMigratesWebProjectsToHaveWebSdkInTheSdkAttribute()
{
var csprojFilePath = RunMigrateWebSdkRuleOnPj(@"
{
""buildOptions"": {
""emitEntryPoint"": true
},
""dependencies"": {
""Microsoft.AspNetCore.Mvc"" : {
""version"": ""1.0.0""
}
},
""frameworks"": {
""netcoreapp1.0"": {}
}
}");
File.ReadAllText(csprojFilePath).Should().Contain(@"Sdk=""Microsoft.NET.Sdk.Web""");
}
private string RunMigrateWebSdkRuleOnPj(string s, string testDirectory = null)
{
testDirectory = testDirectory ?? Temp.CreateDirectory().Path;
var csprojFilePath = Path.Combine(testDirectory, $"{GetContainingFolderName(testDirectory)}.csproj");
File.WriteAllText(csprojFilePath, @"
<Project Sdk=""Microsoft.NET.Sdk"" ToolsVersion=""15.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
<PropertyGroup />
<ItemGroup />
</Project>");
TemporaryProjectFileRuleRunner.RunRules(new IMigrationRule[]
{
new MigrateWebSdkRule()
}, s, testDirectory);
return csprojFilePath;
}
private static string GetContainingFolderName(string projectDirectory)
{
projectDirectory = projectDirectory.TrimEnd(new char[] { '/', '\\' });
return Path.GetFileName(projectDirectory);
}
}
}