From 4ea37c91a8d208b4fc1ecce51a6a76747136cd40 Mon Sep 17 00:00:00 2001 From: Justin Goshi Date: Mon, 31 Oct 2016 13:59:47 -0700 Subject: [PATCH] Migrate: add package dependencies to test projects --- .../PackageConstants.cs | 6 +++++ .../ProjectExtensions.cs | 4 +++ .../ProjectType.cs | 3 ++- .../MigratePackageDependenciesAndToolsRule.cs | 25 +++++++++++++++++++ ...enThatIWantToMigratePackageDependencies.cs | 22 ++++++++++++++++ 5 files changed, 59 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs b/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs index 8df052a58..f342151b9 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/PackageConstants.cs @@ -7,5 +7,11 @@ namespace Microsoft.DotNet.ProjectJsonMigration { public const string SdkPackageName = "Microsoft.NET.Sdk"; 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"; } } \ No newline at end of file diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectExtensions.cs b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectExtensions.cs index d08310122..a2e754d26 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectExtensions.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectExtensions.cs @@ -18,6 +18,10 @@ namespace Microsoft.DotNet.ProjectJsonMigration { projectType = ProjectType.Web; } + else if (project.IsTestProject) + { + projectType = ProjectType.Test; + } return projectType; } diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs index 97001ace2..659ee6d5d 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectType.cs @@ -3,6 +3,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration internal enum ProjectType { Console, - Web + Web, + Test } } \ No newline at end of file diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigratePackageDependenciesAndToolsRule.cs b/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigratePackageDependenciesAndToolsRule.cs index 1e1ec3351..a9d9ef6ac 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigratePackageDependenciesAndToolsRule.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/Rules/MigratePackageDependenciesAndToolsRule.cs @@ -99,6 +99,31 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Rules PrivateAssets = "All" }), noFrameworkPackageReferenceItemGroup, mergeExisting: false); 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: break; } diff --git a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs index 071b69dca..bb415e986 100644 --- a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs +++ b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigratePackageDependencies.cs @@ -258,6 +258,28 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests 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[] packageSpecs) { foreach (var packageSpec in packageSpecs)