From 0a734a94a13733c2950d7edbac08499c6f2c108a Mon Sep 17 00:00:00 2001 From: workgroupengineering Date: Fri, 27 Oct 2023 03:41:43 +0200 Subject: [PATCH] feat: set RuntimeHostConfigurationOption on generated project (#2453) * test: RuntimeHostConfigurationOptionIsCopied * feat: set RuntimeHostConfigurationOption on generated project --- .../Toolchains/CsProj/CsProjGenerator.cs | 3 ++- .../CsProjGeneratorTests.cs | 25 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs index af12d018b5..eaf1da4683 100644 --- a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs +++ b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjGenerator.cs @@ -34,7 +34,8 @@ public class CsProjGenerator : DotNetCliGenerator, IEquatable "CopyLocalLockFileAssemblies", "PreserveCompilationContext", "UserSecretsId", - "EnablePreviewFeatures" + "EnablePreviewFeatures", + "RuntimeHostConfigurationOption", }.ToImmutableArray(); public string RuntimeFrameworkVersion { get; } diff --git a/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs b/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs index 715d7dad64..323da8ddba 100644 --- a/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs +++ b/tests/BenchmarkDotNet.Tests/CsProjGeneratorTests.cs @@ -18,6 +18,11 @@ namespace BenchmarkDotNet.Tests public class CsProjGeneratorTests { private FileInfo TestAssemblyFileInfo = new FileInfo(typeof(CsProjGeneratorTests).Assembly.Location); + private const string runtimeHostConfigurationOptionChunk = """ + + + +"""; [Theory] [InlineData("net471", false)] @@ -68,7 +73,7 @@ private void AssertParsedSdkName(string csProjContent, string targetFrameworkMon private static void AssertCustomProperties(string expected, string actual) { - Assert.Equal(expected.Replace(Environment.NewLine, "\n").Replace("\n", Environment.NewLine), actual); + Assert.Equal(expected.Replace("\r", "").Replace("\n", Environment.NewLine), actual); } [Fact] @@ -158,6 +163,24 @@ public void SettingsFromPropsFileImportedUsingRelativePathGetCopies() File.Delete(propsFilePath); } + [Fact] + public void RuntimeHostConfigurationOptionIsCopied() + { + string source = $@" + +{runtimeHostConfigurationOptionChunk} +"; + + var sut = new CsProjGenerator("netcoreapp3.0", null, null, null, true); + + var xmlDoc = new XmlDocument(); + xmlDoc.LoadXml(source); + var (customProperties, sdkName) = sut.GetSettingsThatNeedToBeCopied(xmlDoc, TestAssemblyFileInfo); + + AssertCustomProperties(runtimeHostConfigurationOptionChunk, customProperties); + Assert.Equal("Microsoft.NET.Sdk", sdkName); + } + [Fact] public void TheDefaultFilePathShouldBeUsedWhenAnAssemblyLocationIsEmpty() {