Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add test which reproduces but in complex framework resolution #71959

Merged
merged 1 commit into from
Jul 12, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Microsoft.DotNet.Cli.Build;
using Microsoft.DotNet.Cli.Build.Framework;
using System;
using Xunit;

namespace Microsoft.DotNet.CoreSetup.Test.HostActivation.FrameworkResolution
{
public class ComplexHierarchies :
FrameworkResolutionBase,
IClassFixture<ComplexHierarchies.SharedTestState>
{
private SharedTestState SharedState { get; }

public ComplexHierarchies(SharedTestState sharedState)
{
SharedState = sharedState;
}

public class SharedTestState : SharedTestStateBase
{
public TestApp FrameworkReferenceApp { get; }

public DotNetCli DotNetWithMultipleFrameworks { get; }

public SharedTestState()
{
DotNetWithMultipleFrameworks = DotNet("DotNetWithMultipleFrameworks")
.AddMicrosoftNETCoreAppFrameworkMockHostPolicy("5.1.1")
.AddFramework("MiddleWare", "2.1.2", runtimeConfig =>
runtimeConfig.WithFramework(MicrosoftNETCoreApp, "5.1.1"))
.AddFramework("SerializerWare", "3.0.1", runtimeConfig =>
runtimeConfig
.WithFramework(MicrosoftNETCoreApp, "5.1.0")
.WithFramework("MiddleWare", "2.1.0"))
.AddFramework("OMWare", "7.3.1", runtimeConfig =>
runtimeConfig
.WithFramework(MicrosoftNETCoreApp, "5.1.0")
.WithFramework("MiddleWare", "2.1.0"))
.Build();

FrameworkReferenceApp = CreateFrameworkReferenceApp();
}
}

[Fact]
public void TwoAppFrameworksOnTopOfMiddleWare()
Copy link
Member

@elinor-fung elinor-fung Jul 12, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would still be an issue with just one framework on top of MiddleWare, as long as it lists MiddleWare last instead of NETCore.App, right? Or does is need the two both doing that?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes - it probably would fail with just one... I added two as it's closer to the original customer reported repro.

{
RunTest(
runtimeConfig => runtimeConfig
.WithFramework(MicrosoftNETCoreApp, "5.1.0")
.WithFramework("MiddleWare", "2.1.0")
.WithFramework("SerializerWare", "3.0.1")
.WithFramework("OMWare", "7.3.1"))
// https://github.com/dotnet/runtime/issues/71027
// This should pass just fine and resolve all frameworks correctly
// Currently it fails because it does resolve frameworks, but incorrectly
// looks for hostpolicy in MiddleWare, instead of Microsoft.NETCore.App.
.Should().Fail().And.HaveStdErrContaining("hostpolicy");
//.ShouldHaveResolvedFramework(
// MicrosoftNETCoreApp, "5.1.1")
//.And.HaveResolvedFramework("MiddleWare", "2.1.")
//.And.HaveResolvedFramework("SerializerWare", "3.0.1")
//.And.HaveResolvedFramework("OMWare", "7.3.1");
}

private CommandResult RunTest(
Func<RuntimeConfig, RuntimeConfig> runtimeConfig,
Action<DotNetCliExtensions.DotNetCliCustomizer> customizeDotNet = null,
bool rollForwardToPreRelease = false)
{
return RunTest(
SharedState.DotNetWithMultipleFrameworks,
SharedState.FrameworkReferenceApp,
new TestSettings()
.WithRuntimeConfigCustomizer(runtimeConfig)
.WithDotnetCustomizer(customizeDotNet)
.WithEnvironment(Constants.RollForwardToPreRelease.EnvironmentVariable, rollForwardToPreRelease ? "1" : "0"));
}
}
}