Migrate: add package dependencies to test projects

This commit is contained in:
Justin Goshi 2016-10-31 13:59:47 -07:00
parent 5a621b53e2
commit 4ea37c91a8
5 changed files with 59 additions and 1 deletions

View file

@ -7,5 +7,11 @@ namespace Microsoft.DotNet.ProjectJsonMigration
{ {
public const string SdkPackageName = "Microsoft.NET.Sdk"; public const string SdkPackageName = "Microsoft.NET.Sdk";
public const string WebSdkPackageName = "Microsoft.NET.Sdk.Web"; public const string WebSdkPackageName = "Microsoft.NET.Sdk.Web";
public const string TestSdkPackageName = "Microsoft.NET.Test.Sdk";
public const string TestSdkPackageVersion = "15.0.0-preview-20161024-02";
public const string XUnitPackageName = "xunit";
public const string XUnitPackageVersion = "2.2.0-beta3-build3402";
public const string XUnitRunnerPackageName = "xunit.runner.visualstudio";
public const string XUnitRunnerPackageVersion = "2.2.0-beta4-build1188";
} }
} }

View file

@ -18,6 +18,10 @@ namespace Microsoft.DotNet.ProjectJsonMigration
{ {
projectType = ProjectType.Web; projectType = ProjectType.Web;
} }
else if (project.IsTestProject)
{
projectType = ProjectType.Test;
}
return projectType; return projectType;
} }

View file

@ -3,6 +3,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration
internal enum ProjectType internal enum ProjectType
{ {
Console, Console,
Web Web,
Test
} }
} }

View file

@ -99,6 +99,31 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules
PrivateAssets = "All" PrivateAssets = "All"
}), noFrameworkPackageReferenceItemGroup, mergeExisting: false); }), noFrameworkPackageReferenceItemGroup, mergeExisting: false);
break; break;
case ProjectType.Test:
_transformApplicator.Execute(
PackageDependencyInfoTransform.Transform(
new PackageDependencyInfo
{
Name = PackageConstants.TestSdkPackageName,
Version = PackageConstants.TestSdkPackageVersion
}), noFrameworkPackageReferenceItemGroup, mergeExisting: false);
_transformApplicator.Execute(
PackageDependencyInfoTransform.Transform(
new PackageDependencyInfo
{
Name = PackageConstants.XUnitPackageName,
Version = PackageConstants.XUnitPackageVersion
}), noFrameworkPackageReferenceItemGroup, mergeExisting: false);
_transformApplicator.Execute(
PackageDependencyInfoTransform.Transform(
new PackageDependencyInfo
{
Name = PackageConstants.XUnitRunnerPackageName,
Version = PackageConstants.XUnitRunnerPackageVersion
}), noFrameworkPackageReferenceItemGroup, mergeExisting: false);
break;
default: default:
break; break;
} }

View file

@ -258,6 +258,28 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests
items[0].Include.Should().Be("System"); items[0].Include.Should().Be("System");
} }
[Fact]
public void It_migrates_test_projects_to_have_test_sdk_and_xunit_packagedependencies()
{
var mockProj = RunPackageDependenciesRuleOnPj(@"
{
""buildOptions"": {
""emitEntryPoint"": true
},
""frameworks"": {
""netcoreapp1.0"": {}
},
""testRunner"": ""xunit""
}");
var items = mockProj.Items
.Where(i => (i.Include == "Microsoft.NET.Test.Sdk" && i.ItemType == "PackageReference") ||
(i.Include == "xunit" && i.ItemType == "PackageReference") ||
(i.Include == "xunit.runner.visualstudio" && i.ItemType == "PackageReference"));
items.Should().HaveCount(3);
}
private void EmitsPackageReferences(ProjectRootElement mockProj, params Tuple<string, string, string>[] packageSpecs) private void EmitsPackageReferences(ProjectRootElement mockProj, params Tuple<string, string, string>[] packageSpecs)
{ {
foreach (var packageSpec in packageSpecs) foreach (var packageSpec in packageSpecs)