From 64042937cf4c0fc26de7e4212f6ba107589dbf41 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 31 Jan 2017 13:09:35 -0800 Subject: [PATCH 1/6] Creating the half migrated test asset. --- .../backup/src/ProjectA/project.json | 19 +++++++++++++++ .../PJHalfMigrated/global.json | 3 +++ .../PJHalfMigrated/src/ProjectA/Program.cs | 12 ++++++++++ .../src/ProjectA/ProjectA.csproj | 13 +++++++++++ .../PJHalfMigrated/test/ProjectB/Program.cs | 12 ++++++++++ .../PJHalfMigrated/test/ProjectB/project.json | 23 +++++++++++++++++++ 6 files changed, 82 insertions(+) create mode 100755 TestAssets/NonRestoredTestProjects/PJHalfMigrated/backup/src/ProjectA/project.json create mode 100644 TestAssets/NonRestoredTestProjects/PJHalfMigrated/global.json create mode 100755 TestAssets/NonRestoredTestProjects/PJHalfMigrated/src/ProjectA/Program.cs create mode 100755 TestAssets/NonRestoredTestProjects/PJHalfMigrated/src/ProjectA/ProjectA.csproj create mode 100755 TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/Program.cs create mode 100755 TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/project.json diff --git a/TestAssets/NonRestoredTestProjects/PJHalfMigrated/backup/src/ProjectA/project.json b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/backup/src/ProjectA/project.json new file mode 100755 index 000000000..ce67b3a46 --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/backup/src/ProjectA/project.json @@ -0,0 +1,19 @@ +{ + "version": "1.0.0-*", + "buildOptions": { + "debugType": "portable", + "emitEntryPoint": true + }, + "dependencies": {}, + "frameworks": { + "netcoreapp1.0": { + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + } + }, + "imports": "dnxcore50" + } + } +} diff --git a/TestAssets/NonRestoredTestProjects/PJHalfMigrated/global.json b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/global.json new file mode 100644 index 000000000..d93eeb709 --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/global.json @@ -0,0 +1,3 @@ +{ + "projects": [ "src", "test" ] +} \ No newline at end of file diff --git a/TestAssets/NonRestoredTestProjects/PJHalfMigrated/src/ProjectA/Program.cs b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/src/ProjectA/Program.cs new file mode 100755 index 000000000..51233cffa --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/src/ProjectA/Program.cs @@ -0,0 +1,12 @@ +using System; + +namespace ConsoleApplication +{ + public class Program + { + public static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} diff --git a/TestAssets/NonRestoredTestProjects/PJHalfMigrated/src/ProjectA/ProjectA.csproj b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/src/ProjectA/ProjectA.csproj new file mode 100755 index 000000000..e8474ecd4 --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/src/ProjectA/ProjectA.csproj @@ -0,0 +1,13 @@ + + + + netcoreapp1.0 + portable + ProjectA + Exe + ProjectA + $(PackageTargetFallback);dnxcore50 + 1.0.3 + + + diff --git a/TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/Program.cs b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/Program.cs new file mode 100755 index 000000000..51233cffa --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/Program.cs @@ -0,0 +1,12 @@ +using System; + +namespace ConsoleApplication +{ + public class Program + { + public static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} diff --git a/TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/project.json b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/project.json new file mode 100755 index 000000000..a93ee629a --- /dev/null +++ b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/project.json @@ -0,0 +1,23 @@ +{ + "version": "1.0.0-*", + "buildOptions": { + "debugType": "portable", + "emitEntryPoint": true + }, + "dependencies": { + "ProjectA": { + "target": "project" + } + }, + "frameworks": { + "netcoreapp1.0": { + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + } + }, + "imports": "dnxcore50" + } + } +} From 6a72ec603ed9833cb2f34228b4c180823ff3df4c Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 31 Jan 2017 15:27:22 -0800 Subject: [PATCH 2/6] Changing the order in which search paths are added for migration and setting the project file path in the ProjectDependency appropriately in the case of csproj and project.json --- .../{test => }/ProjectB/Program.cs | 0 .../{test => }/ProjectB/project.json | 0 .../PJHalfMigrated/global.json | 2 +- .../ProjectDependencyFinder.cs | 11 +++++++--- ...enThatIWantToMigrateProjectDependencies.cs | 21 +++++++++++++++++++ 5 files changed, 30 insertions(+), 4 deletions(-) rename TestAssets/NonRestoredTestProjects/PJHalfMigrated/{test => }/ProjectB/Program.cs (100%) rename TestAssets/NonRestoredTestProjects/PJHalfMigrated/{test => }/ProjectB/project.json (100%) diff --git a/TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/Program.cs b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/ProjectB/Program.cs similarity index 100% rename from TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/Program.cs rename to TestAssets/NonRestoredTestProjects/PJHalfMigrated/ProjectB/Program.cs diff --git a/TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/project.json b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/ProjectB/project.json similarity index 100% rename from TestAssets/NonRestoredTestProjects/PJHalfMigrated/test/ProjectB/project.json rename to TestAssets/NonRestoredTestProjects/PJHalfMigrated/ProjectB/project.json diff --git a/TestAssets/NonRestoredTestProjects/PJHalfMigrated/global.json b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/global.json index d93eeb709..b0323e428 100644 --- a/TestAssets/NonRestoredTestProjects/PJHalfMigrated/global.json +++ b/TestAssets/NonRestoredTestProjects/PJHalfMigrated/global.json @@ -1,3 +1,3 @@ { - "projects": [ "src", "test" ] + "projects": [ "src" ] } \ No newline at end of file diff --git a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectDependencyFinder.cs b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectDependencyFinder.cs index d8332258a..976cc8502 100644 --- a/src/Microsoft.DotNet.ProjectJsonMigration/ProjectDependencyFinder.cs +++ b/src/Microsoft.DotNet.ProjectJsonMigration/ProjectDependencyFinder.cs @@ -230,10 +230,10 @@ namespace Microsoft.DotNet.ProjectJsonMigration projectSearchPaths.Add(projectRootDirectory); var globalPaths = GetGlobalPaths(projectRootDirectory); - projectSearchPaths = projectSearchPaths.Union(globalPaths).ToList(); + projectSearchPaths = globalPaths.Union(projectSearchPaths).ToList(); var solutionPaths = GetSolutionPaths(slnFile); - projectSearchPaths = projectSearchPaths.Union(solutionPaths).ToList(); + projectSearchPaths = solutionPaths.Union(projectSearchPaths).ToList(); var projects = new Dictionary(StringComparer.Ordinal); @@ -328,11 +328,16 @@ namespace Microsoft.DotNet.ProjectJsonMigration var projectJSONFilePath = Path.Combine(projectDirectory.FullName, "project.json"); var csProjFilePath = Path.Combine(projectDirectory.FullName, $"{projectDirectory.Name}.csproj"); - if (File.Exists(projectJSONFilePath) || File.Exists(csProjFilePath)) + if (File.Exists(projectJSONFilePath)) { var project = new ProjectDependency(projectDirectory.Name, projectJSONFilePath); projects.Add(project); } + else if (File.Exists(csProjFilePath)) + { + var project = new ProjectDependency(projectDirectory.Name, csProjFilePath); + projects.Add(project); + } } internal static List GetGlobalPaths(string rootPath) diff --git a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs index 028bda3a8..d8c64688f 100644 --- a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs +++ b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs @@ -302,6 +302,27 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests item => item.ItemType == "ProjectReference" && item.Include == projectReferenceInclude); } + [Fact] + public void ItDoesNotReferenceTheProjectUnderBackupWhenMigratingAPartiallyMigratedStructure() + { + var testAssetsManager = GetTestGroupTestAssetsManager("NonRestoredTestProjects"); + var solutionDirectory = testAssetsManager.CreateTestInstance("PJHalfMigrated").Path; + + var appDirectory = Path.Combine(solutionDirectory, "ProjectB"); + + var projectContext = ProjectContext.Create(appDirectory, FrameworkConstants.CommonFrameworks.NetCoreApp10); + var mockProj = ProjectRootElement.Create(); + var testSettings = MigrationSettings.CreateMigrationSettingsTestHook(appDirectory, appDirectory, mockProj, null); + var testInputs = new MigrationRuleInputs(new[] {projectContext}, mockProj, mockProj.AddItemGroup(), + mockProj.AddPropertyGroup()); + new MigrateProjectDependenciesRule().Apply(testSettings, testInputs); + + var projectReferences = mockProj.Items.Where( + item => item.ItemType.Equals("ProjectReference", StringComparison.Ordinal)); + projectReferences.Should().ContainSingle(); + projectReferences.Single().Include.Should().Be("../src/ProjectA/ProjectA.csproj"); + } + private ProjectRootElement MigrateProject(string solution, string project) { return MigrateProject(solution, project, FrameworkConstants.CommonFrameworks.NetCoreApp10); From 49ae86d09f5fc6d39f964b9656784fdefab13cb5 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Tue, 31 Jan 2017 18:53:18 -0800 Subject: [PATCH 3/6] Fixing new test to work crossplat by calculating path with Path.Combine --- .../Rules/GivenThatIWantToMigrateProjectDependencies.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs index d8c64688f..cbfb015a4 100644 --- a/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs +++ b/test/Microsoft.DotNet.ProjectJsonMigration.Tests/Rules/GivenThatIWantToMigrateProjectDependencies.cs @@ -320,7 +320,7 @@ namespace Microsoft.DotNet.ProjectJsonMigration.Tests var projectReferences = mockProj.Items.Where( item => item.ItemType.Equals("ProjectReference", StringComparison.Ordinal)); projectReferences.Should().ContainSingle(); - projectReferences.Single().Include.Should().Be("../src/ProjectA/ProjectA.csproj"); + projectReferences.Single().Include.Should().Be(Path.Combine("..", "src", "ProjectA", "ProjectA.csproj")); } private ProjectRootElement MigrateProject(string solution, string project) From 0c338ced75010af0239d0d88419714c0f0a07202 Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 1 Feb 2017 12:15:00 -0800 Subject: [PATCH 4/6] Fixing a failing test. Basically, now that global.json paths have precedence, we were using the CLI global.json and finding the wrong project dependencies. --- TestAssets/TestProjects/TestAppDependencyGraph/global.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 TestAssets/TestProjects/TestAppDependencyGraph/global.json diff --git a/TestAssets/TestProjects/TestAppDependencyGraph/global.json b/TestAssets/TestProjects/TestAppDependencyGraph/global.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/TestAssets/TestProjects/TestAppDependencyGraph/global.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 0c411e7e1feb480c4edfc0b224a7d2d3db9d67ec Mon Sep 17 00:00:00 2001 From: Livar Cunha Date: Wed, 1 Feb 2017 13:58:15 -0800 Subject: [PATCH 5/6] Adding another global.json to a failing test asset. --- .../TestProjects/TestAppWithUnqualifiedDependencies/global.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/global.json diff --git a/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/global.json b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/global.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/TestAssets/TestProjects/TestAppWithUnqualifiedDependencies/global.json @@ -0,0 +1 @@ +{} \ No newline at end of file From fe52fad34acb258cb8f59506896beba8430ac33d Mon Sep 17 00:00:00 2001 From: Satya Madala Date: Tue, 24 Jan 2017 21:27:25 +0530 Subject: [PATCH 6/6] Revert results directory argument changes --- src/dotnet/commands/dotnet-test/LocalizableStrings.cs | 3 --- src/dotnet/commands/dotnet-test/Program.cs | 10 ---------- 2 files changed, 13 deletions(-) diff --git a/src/dotnet/commands/dotnet-test/LocalizableStrings.cs b/src/dotnet/commands/dotnet-test/LocalizableStrings.cs index 16159aa0f..0f69a5cc8 100644 --- a/src/dotnet/commands/dotnet-test/LocalizableStrings.cs +++ b/src/dotnet/commands/dotnet-test/LocalizableStrings.cs @@ -55,8 +55,5 @@ public const string RunSettingsArgsHelpText = @"Any extra commandline runsettings arguments that should be passed to vstest. See 'dotnet vstest --help' for available options. Example: -- RunConfiguration.ResultsDirectory=""C:\users\user\desktop\Results Directory"" MSTest.DeploymentEnabled=false"; - - public const string CmdResultsDirectoryDescription = @"The test results directory will be created in the specified path if it does not exist. - Example: --results-directory "; } } diff --git a/src/dotnet/commands/dotnet-test/Program.cs b/src/dotnet/commands/dotnet-test/Program.cs index 26a57f494..89d0c3595 100644 --- a/src/dotnet/commands/dotnet-test/Program.cs +++ b/src/dotnet/commands/dotnet-test/Program.cs @@ -83,11 +83,6 @@ namespace Microsoft.DotNet.Tools.Test LocalizableStrings.CmdNoBuildDescription, CommandOptionType.NoValue); - var resultsDirectoryOption = cmd.Option( - "-r|--results-directory", - LocalizableStrings.CmdResultsDirectoryDescription, - CommandOptionType.SingleValue); - CommandOption verbosityOption = MSBuildForwardingApp.AddVerbosityOption(cmd); cmd.OnExecute(() => @@ -134,11 +129,6 @@ namespace Microsoft.DotNet.Tools.Test msbuildArgs.Add($"/p:TargetFramework={frameworkOption.Value()}"); } - if (resultsDirectoryOption.HasValue()) - { - msbuildArgs.Add($"/p:VSTestResultsDirectory={resultsDirectoryOption.Value()}"); - } - if (outputOption.HasValue()) { msbuildArgs.Add($"/p:OutputPath={outputOption.Value()}");