Adding ranges to the source mappings so that we can specify the origin should match this range and migrate to that version. We use this to handle LTS/FTS migration and will use that for the LTS uplift.
This commit is contained in:
parent
4319668111
commit
89fba856e8
4 changed files with 227 additions and 59 deletions
|
@ -6,6 +6,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration
|
|||
internal class ConstantPackageVersions
|
||||
{
|
||||
public const string AspNetToolsVersion = "1.0.0-msbuild3-final";
|
||||
public const string AspNet110ToolsVersion = "1.1.0-msbuild3-final";
|
||||
public const string TestSdkPackageVersion = "15.0.0-preview-20170106-08";
|
||||
public const string XUnitPackageVersion = "2.2.0-beta4-build3444";
|
||||
public const string XUnitRunnerPackageVersion = "2.2.0-beta4-build1194";
|
||||
|
|
|
@ -26,55 +26,215 @@ namespace Microsoft.DotNet.ProjectJsonMigration
|
|||
public const string DotnetTestXunit = "dotnet-test-xunit";
|
||||
public const string DotnetTestMSTest = "dotnet-test-mstest";
|
||||
|
||||
public static readonly IDictionary<string, PackageDependencyInfo> ProjectDependencyPackages =
|
||||
new Dictionary<string, PackageDependencyInfo> {
|
||||
{"Microsoft.EntityFrameworkCore.Tools", new PackageDependencyInfo {
|
||||
Name = "Microsoft.EntityFrameworkCore.Tools",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion } },
|
||||
{ "Microsoft.AspNetCore.Razor.Tools", null },
|
||||
{ "Microsoft.AspNetCore.Razor.Design", null },
|
||||
{ "Microsoft.VisualStudio.Web.CodeGenerators.Mvc", new PackageDependencyInfo {
|
||||
Name = "Microsoft.VisualStudio.Web.CodeGeneration.Design",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion } },
|
||||
{ "Microsoft.VisualStudio.Web.CodeGeneration.Tools", null},
|
||||
{ TestSdkPackageName, new PackageDependencyInfo {
|
||||
Name = TestSdkPackageName,
|
||||
Version = ConstantPackageVersions.TestSdkPackageVersion } },
|
||||
{ XUnitPackageName, new PackageDependencyInfo {
|
||||
Name = XUnitPackageName,
|
||||
Version = ConstantPackageVersions.XUnitPackageVersion } },
|
||||
{ XUnitRunnerPackageName, new PackageDependencyInfo {
|
||||
Name = XUnitRunnerPackageName,
|
||||
Version = ConstantPackageVersions.XUnitRunnerPackageVersion } },
|
||||
{ MstestTestAdapterName, new PackageDependencyInfo {
|
||||
Name = MstestTestAdapterName,
|
||||
Version = ConstantPackageVersions.MstestTestAdapterVersion } },
|
||||
{ MstestTestFrameworkName, new PackageDependencyInfo {
|
||||
Name = MstestTestFrameworkName,
|
||||
Version = ConstantPackageVersions.MstestTestFrameworkVersion } },
|
||||
{ DotnetTestXunit, null },
|
||||
{ DotnetTestMSTest, null },
|
||||
public static readonly IDictionary<PackageDependencyInfo, PackageDependencyInfo> ProjectDependencyPackages =
|
||||
new Dictionary<PackageDependencyInfo, PackageDependencyInfo> {
|
||||
{
|
||||
new PackageDependencyInfo {
|
||||
Name = "Microsoft.EntityFrameworkCore.Tools",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo {
|
||||
Name = "Microsoft.EntityFrameworkCore.Tools",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion }
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.AspNetCore.Razor.Tools",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
null
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.AspNetCore.Razor.Design",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
null
|
||||
},
|
||||
// I hate to do this, but ordering here matters. The higher version needs to come first, otherwise
|
||||
// the lower version mapping will match to it.
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.VisualStudio.Web.CodeGenerators.Mvc",
|
||||
Version = "[1.1.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.VisualStudio.Web.CodeGeneration.Design",
|
||||
Version = ConstantPackageVersions.AspNet110ToolsVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.VisualStudio.Web.CodeGenerators.Mvc",
|
||||
Version = "[1.0.0-*,1.1.0)"
|
||||
},
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.VisualStudio.Web.CodeGeneration.Design",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.VisualStudio.Web.CodeGeneration.Tools",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
null
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = TestSdkPackageName,
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = TestSdkPackageName,
|
||||
Version = ConstantPackageVersions.TestSdkPackageVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = XUnitPackageName,
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = XUnitPackageName,
|
||||
Version = ConstantPackageVersions.XUnitPackageVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = XUnitRunnerPackageName,
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo {
|
||||
Name = XUnitRunnerPackageName,
|
||||
Version = ConstantPackageVersions.XUnitRunnerPackageVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = MstestTestAdapterName,
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = MstestTestAdapterName,
|
||||
Version = ConstantPackageVersions.MstestTestAdapterVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = MstestTestFrameworkName,
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo {
|
||||
Name = MstestTestFrameworkName,
|
||||
Version = ConstantPackageVersions.MstestTestFrameworkVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = DotnetTestXunit,
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
null
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = DotnetTestMSTest,
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
null
|
||||
},
|
||||
};
|
||||
|
||||
public static readonly IDictionary<string, PackageDependencyInfo> ProjectToolPackages =
|
||||
new Dictionary<string, PackageDependencyInfo> {
|
||||
{"Microsoft.EntityFrameworkCore.Tools", new PackageDependencyInfo {
|
||||
Name = "Microsoft.EntityFrameworkCore.Tools.DotNet",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion } },
|
||||
{ "Microsoft.AspNetCore.Razor.Tools", null },
|
||||
{ "Microsoft.VisualStudio.Web.CodeGeneration.Tools", new PackageDependencyInfo {
|
||||
Name = "Microsoft.VisualStudio.Web.CodeGeneration.Tools",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion } },
|
||||
{ "Microsoft.DotNet.Watcher.Tools", new PackageDependencyInfo {
|
||||
Name = "Microsoft.DotNet.Watcher.Tools",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion } },
|
||||
{ "Microsoft.Extensions.SecretManager.Tools", new PackageDependencyInfo {
|
||||
Name = "Microsoft.Extensions.SecretManager.Tools",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion } },
|
||||
{ "Microsoft.AspNetCore.Server.IISIntegration.Tools", null},
|
||||
{ "BundlerMinifier.Core", new PackageDependencyInfo {
|
||||
Name = "BundlerMinifier.Core",
|
||||
Version = ConstantPackageVersions.BundleMinifierToolVersion } }
|
||||
public static readonly IDictionary<PackageDependencyInfo, PackageDependencyInfo> ProjectToolPackages =
|
||||
new Dictionary<PackageDependencyInfo, PackageDependencyInfo> {
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.EntityFrameworkCore.Tools",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo {
|
||||
Name = "Microsoft.EntityFrameworkCore.Tools.DotNet",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.AspNetCore.Razor.Tools",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
null
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.VisualStudio.Web.CodeGeneration.Tools",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo {
|
||||
Name = "Microsoft.VisualStudio.Web.CodeGeneration.Tools",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.DotNet.Watcher.Tools",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo {
|
||||
Name = "Microsoft.DotNet.Watcher.Tools",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.Extensions.SecretManager.Tools",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo {
|
||||
Name = "Microsoft.Extensions.SecretManager.Tools",
|
||||
Version = ConstantPackageVersions.AspNetToolsVersion
|
||||
}
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo
|
||||
{
|
||||
Name = "Microsoft.AspNetCore.Server.IISIntegration.Tools",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
null
|
||||
},
|
||||
{
|
||||
new PackageDependencyInfo{
|
||||
Name = "BundlerMinifier.Core",
|
||||
Version = "[1.0.0-*,)"
|
||||
},
|
||||
new PackageDependencyInfo {
|
||||
Name = "BundlerMinifier.Core",
|
||||
Version = ConstantPackageVersions.BundleMinifierToolVersion
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -13,6 +13,7 @@ using Microsoft.DotNet.Internal.ProjectModel;
|
|||
using Microsoft.DotNet.Tools.Common;
|
||||
using NuGet.Frameworks;
|
||||
using NuGet.LibraryModel;
|
||||
using NuGet.Versioning;
|
||||
|
||||
namespace Microsoft.DotNet.ProjectJsonMigration.Rules
|
||||
{
|
||||
|
@ -274,14 +275,17 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
|
|||
|
||||
private PackageDependencyInfo ToPackageDependencyInfo(
|
||||
ProjectLibraryDependency dependency,
|
||||
IDictionary<string, PackageDependencyInfo> dependencyToVersionMap)
|
||||
IDictionary<PackageDependencyInfo, PackageDependencyInfo> dependencyToVersionMap)
|
||||
{
|
||||
var name = dependency.Name;
|
||||
var version = dependency.LibraryRange?.VersionRange?.OriginalString;
|
||||
|
||||
if (dependencyToVersionMap.ContainsKey(name))
|
||||
var possibleMappings = dependencyToVersionMap.Where(c => c.Key.Name == name);
|
||||
if (possibleMappings.Any())
|
||||
{
|
||||
var dependencyInfo = dependencyToVersionMap[name];
|
||||
var possibleVersions = possibleMappings.Select(p => VersionRange.Parse(p.Key.Version));
|
||||
var bestMatchVersion = possibleVersions.First(p => p.Satisfies(dependency.LibraryRange?.VersionRange?.ToNonSnapshotRange().MinVersion));
|
||||
var dependencyInfo = possibleMappings.First(c => c.Key.Version == bestMatchVersion.OriginalString).Value;
|
||||
if (dependencyInfo == null)
|
||||
{
|
||||
return null;
|
||||
|
|
|
@ -12,19 +12,22 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
public class GivenThatIWantToMigrateTools : PackageDependenciesTestBase
|
||||
{
|
||||
[Theory]
|
||||
[InlineData("Microsoft.EntityFrameworkCore.Tools", "Microsoft.EntityFrameworkCore.Tools", ConstantPackageVersions.AspNetToolsVersion)]
|
||||
[InlineData("Microsoft.VisualStudio.Web.CodeGenerators.Mvc", "Microsoft.VisualStudio.Web.CodeGeneration.Design", ConstantPackageVersions.AspNetToolsVersion)]
|
||||
public void It_migrates_project_dependencies_to_a_new_name_and_version(
|
||||
[InlineData("Microsoft.EntityFrameworkCore.Tools", "1.0.0-preview2-final", "Microsoft.EntityFrameworkCore.Tools", ConstantPackageVersions.AspNetToolsVersion)]
|
||||
[InlineData("Microsoft.VisualStudio.Web.CodeGenerators.Mvc", "1.0.0-preview2-final", "Microsoft.VisualStudio.Web.CodeGeneration.Design", ConstantPackageVersions.AspNetToolsVersion)]
|
||||
[InlineData("Microsoft.VisualStudio.Web.CodeGenerators.Mvc", "1.0.0-*", "Microsoft.VisualStudio.Web.CodeGeneration.Design", ConstantPackageVersions.AspNetToolsVersion)]
|
||||
[InlineData("Microsoft.VisualStudio.Web.CodeGenerators.Mvc", "1.0.0-preview3-final", "Microsoft.VisualStudio.Web.CodeGeneration.Design", ConstantPackageVersions.AspNetToolsVersion)]
|
||||
[InlineData("Microsoft.VisualStudio.Web.CodeGenerators.Mvc", "1.1.0-preview4-final", "Microsoft.VisualStudio.Web.CodeGeneration.Design", "1.1.0-msbuild3-final")]
|
||||
public void ItMigratesProjectDependenciesToANewNameAndVersion(
|
||||
string sourceToolName,
|
||||
string sourceVersion,
|
||||
string targetToolName,
|
||||
string targetVersion)
|
||||
{
|
||||
const string anyVersion = "1.0.0-preview2-final";
|
||||
var mockProj = RunPackageDependenciesRuleOnPj("{ \"dependencies\": { \"" + sourceToolName + "\" : { \"version\": \"" + anyVersion + "\", \"type\": \"build\" } } }");
|
||||
var mockProj = RunPackageDependenciesRuleOnPj("{ \"dependencies\": { \"" + sourceToolName + "\" : { \"version\": \"" + sourceVersion + "\", \"type\": \"build\" } } }");
|
||||
|
||||
var packageRef = mockProj.Items.First(i => i.Include == targetToolName && i.ItemType == "PackageReference");
|
||||
|
||||
packageRef.GetMetadataWithName("Version").Value.Should().Be(ConstantPackageVersions.AspNetToolsVersion);
|
||||
packageRef.GetMetadataWithName("Version").Value.Should().Be(targetVersion);
|
||||
|
||||
packageRef.GetMetadataWithName("PrivateAssets").Value.Should().NotBeNull().And.Be("All");
|
||||
}
|
||||
|
@ -35,7 +38,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
[InlineData("Microsoft.VisualStudio.Web.CodeGeneration.Tools")]
|
||||
[InlineData("dotnet-test-xunit")]
|
||||
[InlineData("dotnet-test-mstest")]
|
||||
public void It_does_not_migrate_project_tool_dependency_that_is_no_longer_needed(string dependencyName)
|
||||
public void ItDoesNotMigrateProjectToolDependencyThatIsNoLongerNeeded(string dependencyName)
|
||||
{
|
||||
var mockProj = RunPackageDependenciesRuleOnPj(@"
|
||||
{
|
||||
|
@ -59,7 +62,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
[InlineData("Microsoft.DotNet.Watcher.Tools", "Microsoft.DotNet.Watcher.Tools", ConstantPackageVersions.AspNetToolsVersion)]
|
||||
[InlineData("Microsoft.Extensions.SecretManager.Tools", "Microsoft.Extensions.SecretManager.Tools", ConstantPackageVersions.AspNetToolsVersion)]
|
||||
[InlineData("BundlerMinifier.Core", "BundlerMinifier.Core", ConstantPackageVersions.BundleMinifierToolVersion)]
|
||||
public void It_migrates_asp_project_tools_to_a_new_name_and_version(
|
||||
public void ItMigratesAspProjectToolsToANewNameAndVersion(
|
||||
string sourceToolName,
|
||||
string targetToolName,
|
||||
string targetVersion)
|
||||
|
@ -73,7 +76,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
|
|||
[Theory]
|
||||
[InlineData("Microsoft.AspNetCore.Razor.Tools")]
|
||||
[InlineData("Microsoft.AspNetCore.Server.IISIntegration.Tools")]
|
||||
public void It_does_not_migrate_asp_project_tool(string toolName)
|
||||
public void ItDoesNotMigrateAspProjectTool(string toolName)
|
||||
{
|
||||
var mockProj = RunPackageDependenciesRuleOnPj(@"
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue