From 9d96bf8c209cf62843dc47ea341ffdcba60cbe9d Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Mon, 5 Dec 2016 18:23:34 -0800 Subject: [PATCH] Adding GenerateRuntimeConfigurationFiles when migrating a test project. --- .../Rules/MigrateBuildOptionsRule.cs | 10 +++++++++ .../GivenThatIWantToMigrateBuildOptions.cs | 22 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigrateBuildOptionsRule.cs b/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigrateBuildOptionsRule.cs index 364833709..35e440495 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigrateBuildOptionsRule.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigrateBuildOptionsRule.cs @@ -113,6 +113,12 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules new IncludeContextTransform("Content", transformMappings: true) .WithMetadata("CopyToOutputDirectory", "PreserveNewest"); + private AddPropertyTransform GenerateRuntimeConfigurationFilesTransform => + new AddPropertyTransform( + "GenerateRuntimeConfigurationFiles", + project => "true", + project => project.GetProjectType() == ProjectType.Test); + private Func> CompileFilesTransformExecute => (compilerOptions, projectDirectory) => CompileFilesTransform.Transform(GetCompileIncludeContext(compilerOptions, projectDirectory)); @@ -219,6 +225,10 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules _transformApplicator, migrationSettings.ProjectDirectory); } + + var transformOutput = GenerateRuntimeConfigurationFilesTransform.Transform( + migrationRuleInputs.DefaultProjectContext.ProjectFile); + _transformApplicator.Execute(transformOutput, propertyGroup, mergeExisting: true); } private void PerformConfigurationPropertyAndItemMappings( diff --git a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateBuildOptions.cs b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateBuildOptions.cs index f9b3c683c..3e62bccf6 100644 --- a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateBuildOptions.cs +++ b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateBuildOptions.cs @@ -480,6 +480,28 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests } } + [Fact] + public void MigratingTestProjectAddsGenerateRuntimeConfigurationFiles() + { + var mockProj = RunBuildOptionsRuleOnPj(@" + { + ""testRunner"": ""xunit"" + }"); + + mockProj.Properties.Count(p => p.Name == "GenerateRuntimeConfigurationFiles").Should().Be(1); + mockProj.Properties.First(p => p.Name == "GenerateRuntimeConfigurationFiles").Value.Should().Be("true"); + } + + [Fact] + public void MigratingANonTestProjectDoesNotAddGenerateRuntimeConfigurationFiles() + { + var mockProj = RunBuildOptionsRuleOnPj(@" + { + }"); + + mockProj.Properties.Count(p => p.Name == "GenerateRuntimeConfigurationFiles").Should().Be(0); + } + private static IEnumerable GetDefaultExcludePatterns(string group) { return group == "copyToOutput" ? ProjectFilesCollection.DefaultPublishExcludePatterns