File: MetadataUpdaterSupportTest.cs
Web Access
Project: ..\..\..\test\Microsoft.NET.Build.Tests\Microsoft.NET.Build.Tests.csproj (Microsoft.NET.Build.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Microsoft.NET.Build.Tests
{
    public class MetadataUpdaterSupportTest : SdkTest
    {
        public MetadataUpdaterSupportTest(ITestOutputHelper log) : base(log)
        {
        }
 
        [CoreMSBuildOnlyFact] // Running on desktop causes failures attempting to restore M.NETCore.App.WinHost.
        public void It_Configures_MetadataUpdaterSupport_InReleaseBuilds()
        {
            var targetFramework = "net6.0";
            var testAsset = _testAssetsManager
                .CopyTestAsset("HelloWorld")
                .WithSource()
                .WithTargetFramework("net6.0");
 
            var buildCommand = new BuildCommand(testAsset);
            buildCommand
                .Execute("/p:Configuration=Release")
                .Should()
                .Pass();
 
            var outputDirectory = buildCommand.GetOutputDirectory(targetFramework, configuration: "Release");
            var runtimeConfigPath = Path.Combine(outputDirectory.FullName, "HelloWorld.runtimeconfig.json");
 
            File.Exists(runtimeConfigPath).Should().BeTrue();
 
            var fileContents = File.ReadAllText(runtimeConfigPath);
            fileContents.Should().Contain("\"System.Reflection.Metadata.MetadataUpdater.IsSupported\": false");
        }
 
        [CoreMSBuildOnlyFact]
        public void It_Configures_MetadataUpdaterSupport_InDebugBuilds()
        {
            var targetFramework = "net6.0";
            var testAsset = _testAssetsManager
                .CopyTestAsset("HelloWorld")
                .WithSource()
                .WithTargetFramework("net6.0");
 
            var buildCommand = new BuildCommand(testAsset);
            buildCommand
                .Execute()
                .Should()
                .Pass();
 
            var outputDirectory = buildCommand.GetOutputDirectory(targetFramework);
            var runtimeConfigPath = Path.Combine(outputDirectory.FullName, "HelloWorld.runtimeconfig.json");
 
            File.Exists(runtimeConfigPath).Should().BeTrue();
 
            var fileContents = File.ReadAllText(runtimeConfigPath);
            fileContents.Should().NotContain("\"System.Reflection.Metadata.MetadataUpdater.IsSupported\": false");
        }
    }
}