Merge pull request #4737 from livarcocc/migrate_authors

Adding Authors migration.
This commit is contained in:
Livar 2016-11-16 09:29:13 -08:00 committed by GitHub
commit 9847196c95
2 changed files with 58 additions and 7 deletions

View file

@ -1,7 +1,9 @@
// 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 System.Collections.Generic;
using System.Linq;
using Microsoft.DotNet.Cli.Utils;
using Microsoft.DotNet.ProjectJsonMigration.Transforms;
using Project = Microsoft.DotNet.Internal.ProjectModel.Project;
@ -22,7 +24,8 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
CopyrightTransform,
TitleTransform,
LanguageTransform,
VersionTransform
VersionTransform,
AuthorsTransform
};
}
@ -42,23 +45,34 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
}
}
private AddPropertyTransform<Project> DescriptionTransform => new AddPropertyTransform<Project>("Description",
private AddPropertyTransform<Project> DescriptionTransform => new AddPropertyTransform<Project>(
"Description",
project => project.Description,
project => !string.IsNullOrEmpty(project.Description));
private AddPropertyTransform<Project> CopyrightTransform => new AddPropertyTransform<Project>("Copyright",
private AddPropertyTransform<Project> CopyrightTransform => new AddPropertyTransform<Project>(
"Copyright",
project => project.Copyright,
project => !string.IsNullOrEmpty(project.Copyright));
private AddPropertyTransform<Project> TitleTransform => new AddPropertyTransform<Project>("AssemblyTitle",
private AddPropertyTransform<Project> TitleTransform => new AddPropertyTransform<Project>(
"AssemblyTitle",
project => project.Title,
project => !string.IsNullOrEmpty(project.Title));
private AddPropertyTransform<Project> LanguageTransform => new AddPropertyTransform<Project>("NeutralLanguage",
private AddPropertyTransform<Project> LanguageTransform => new AddPropertyTransform<Project>(
"NeutralLanguage",
project => project.Language,
project => !string.IsNullOrEmpty(project.Language));
private AddPropertyTransform<Project> VersionTransform => new AddPropertyTransform<Project>("VersionPrefix",
project => project.Version.ToString(), p => true);
private AddPropertyTransform<Project> VersionTransform => new AddPropertyTransform<Project>(
"VersionPrefix",
project => project.Version.ToString(),
p => true);
private AddPropertyTransform<Project> AuthorsTransform => new AddPropertyTransform<Project>(
"Authors",
project => string.Join(";", project.Authors),
project => project.Authors.OrEmptyIfNull().Any());
}
}

View file

@ -0,0 +1,37 @@
// 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 System.Linq;
using Microsoft.Build.Construction;
using Microsoft.DotNet.Tools.Test.Utilities;
using FluentAssertions;
using Microsoft.DotNet.ProjectJsonMigration.Rules;
using Xunit;
namespace Microsoft.DotNet.ProjectJsonMigration.Tests
{
public class GivenThatIWantToMigrateRootOptions : TestBase
{
[Fact]
public void It_migrates_authors()
{
var mockProj = RunPropertiesRuleOnPj(@"
{
""authors"": [ ""Some author"", ""Some other author"" ]
}");
mockProj.Properties.Count(p => p.Name == "Authors").Should().Be(1);
mockProj.Properties.First(p => p.Name == "Authors").Value.Should().Be(
"Some author;Some other author");
}
private ProjectRootElement RunPropertiesRuleOnPj(string project, string testDirectory = null)
{
testDirectory = testDirectory ?? Temp.CreateDirectory().Path;
return TemporaryProjectFileRuleRunner.RunRules(new IMigrationRule[]
{
new MigrateRootOptionsRule()
}, project, testDirectory);
}
}
}