Making Project Tools use the CLI shared runtime if they have the prefercliruntime in the root of their package. This allows for project tools to not have to change when a new runtime comes up as long as they are compatible with the runtime that the CLI is using.
This commit is contained in:
parent
da0e7b744b
commit
dc87680337
11 changed files with 199 additions and 6 deletions
|
@ -17,7 +17,8 @@ namespace Microsoft.DotNet.Tests
|
|||
{
|
||||
public class GivenAProjectToolsCommandResolver : TestBase
|
||||
{
|
||||
private static readonly NuGetFramework s_toolPackageFramework = FrameworkConstants.CommonFrameworks.NetCoreApp10;
|
||||
private static readonly NuGetFramework s_toolPackageFramework =
|
||||
FrameworkConstants.CommonFrameworks.NetCoreApp10;
|
||||
|
||||
private const string TestProjectName = "AppWithToolDependency";
|
||||
|
||||
|
@ -260,16 +261,64 @@ namespace Microsoft.DotNet.Tests
|
|||
File.Delete(depsJsonFile);
|
||||
}
|
||||
|
||||
private ProjectToolsCommandResolver SetupProjectToolsCommandResolver(
|
||||
IPackagedCommandSpecFactory packagedCommandSpecFactory = null)
|
||||
[Fact]
|
||||
public void It_adds_fx_version_as_a_param_when_the_tool_has_the_prefercliruntime_file()
|
||||
{
|
||||
var projectToolsCommandResolver = SetupProjectToolsCommandResolver();
|
||||
|
||||
var testInstance = TestAssetsManager
|
||||
.CreateTestInstance("MSBuildTestApp")
|
||||
.WithNuGetMSBuildFiles()
|
||||
.WithLockFiles();
|
||||
|
||||
var commandResolverArguments = new CommandResolverArguments()
|
||||
{
|
||||
CommandName = "dotnet-prefercliruntime",
|
||||
CommandArguments = null,
|
||||
ProjectDirectory = testInstance.Path
|
||||
};
|
||||
|
||||
var result = projectToolsCommandResolver.Resolve(commandResolverArguments);
|
||||
|
||||
result.Should().NotBeNull();
|
||||
|
||||
result.Args.Should().Contain("-fx-version 1.0.1");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void It_does_not_add_fx_version_as_a_param_when_the_tool_does_not_have_the_prefercliruntime_file()
|
||||
{
|
||||
var projectToolsCommandResolver = SetupProjectToolsCommandResolver();
|
||||
|
||||
var testInstance = TestAssetsManager
|
||||
.CreateTestInstance(TestProjectName)
|
||||
.WithNuGetMSBuildFiles()
|
||||
.WithLockFiles();
|
||||
|
||||
var commandResolverArguments = new CommandResolverArguments()
|
||||
{
|
||||
CommandName = "dotnet-portable",
|
||||
CommandArguments = null,
|
||||
ProjectDirectory = testInstance.Path
|
||||
};
|
||||
|
||||
var result = projectToolsCommandResolver.Resolve(commandResolverArguments);
|
||||
|
||||
result.Should().NotBeNull();
|
||||
|
||||
result.Args.Should().NotContain("-fx-version");
|
||||
}
|
||||
|
||||
private ProjectToolsCommandResolver SetupProjectToolsCommandResolver()
|
||||
{
|
||||
Environment.SetEnvironmentVariable(
|
||||
Constants.MSBUILD_EXE_PATH,
|
||||
Path.Combine(new RepoDirectoriesProvider().Stage2Sdk, "MSBuild.dll"));
|
||||
|
||||
packagedCommandSpecFactory = packagedCommandSpecFactory ?? new PackagedCommandSpecFactory();
|
||||
var packagedCommandSpecFactory = new PackagedCommandSpecFactoryWithCliRuntime();
|
||||
|
||||
var projectToolsCommandResolver = new ProjectToolsCommandResolver(packagedCommandSpecFactory, new EnvironmentProvider());
|
||||
var projectToolsCommandResolver =
|
||||
new ProjectToolsCommandResolver(packagedCommandSpecFactory, new EnvironmentProvider());
|
||||
|
||||
return projectToolsCommandResolver;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue