2016-08-22 19:24:10 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using Microsoft.Build.Construction;
|
2016-08-23 20:50:05 +00:00
|
|
|
|
using Microsoft.DotNet.ProjectJsonMigration.Rules;
|
2016-08-22 19:24:10 +00:00
|
|
|
|
using Microsoft.DotNet.ProjectModel;
|
|
|
|
|
using NuGet.Frameworks;
|
|
|
|
|
|
|
|
|
|
namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|
|
|
|
{
|
|
|
|
|
public class TemporaryProjectFileRuleRunner
|
|
|
|
|
{
|
|
|
|
|
public static ProjectRootElement RunRules(IEnumerable<IMigrationRule> rules, string projectJson,
|
2016-09-22 00:27:02 +00:00
|
|
|
|
string testDirectory, ProjectRootElement xproj=null)
|
2016-08-22 19:24:10 +00:00
|
|
|
|
{
|
|
|
|
|
var projectContext = GenerateProjectContextFromString(testDirectory, projectJson);
|
2016-09-22 00:27:02 +00:00
|
|
|
|
return RunMigrationRulesOnGeneratedProject(rules, projectContext, testDirectory, xproj);
|
2016-08-22 19:24:10 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static ProjectContext GenerateProjectContextFromString(string projectDirectory, string json)
|
|
|
|
|
{
|
|
|
|
|
var testPj = new ProjectJsonBuilder(null)
|
|
|
|
|
.FromStringBase(json)
|
|
|
|
|
.SaveToDisk(projectDirectory);
|
|
|
|
|
|
|
|
|
|
return ProjectContext.Create(testPj, FrameworkConstants.CommonFrameworks.NetCoreApp10);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static ProjectRootElement RunMigrationRulesOnGeneratedProject(IEnumerable<IMigrationRule> rules,
|
2016-09-22 00:27:02 +00:00
|
|
|
|
ProjectContext projectContext, string testDirectory, ProjectRootElement xproj)
|
2016-08-22 19:24:10 +00:00
|
|
|
|
{
|
|
|
|
|
var project = ProjectRootElement.Create();
|
|
|
|
|
var testSettings = new MigrationSettings(testDirectory, testDirectory, "1.0.0", project);
|
|
|
|
|
var testInputs = new MigrationRuleInputs(new[] {projectContext}, project,
|
|
|
|
|
project.AddItemGroup(),
|
2016-09-22 00:27:02 +00:00
|
|
|
|
project.AddPropertyGroup(),
|
|
|
|
|
xproj);
|
2016-08-22 19:24:10 +00:00
|
|
|
|
|
|
|
|
|
foreach (var rule in rules)
|
|
|
|
|
{
|
|
|
|
|
rule.Apply(testSettings, testInputs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return project;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|