Skip to content

Commit

Permalink
Fix cake-build#1522 MSTest.exe tool path support for VS2017
Browse files Browse the repository at this point in the history
  • Loading branch information
Bert Van Steen committed Oct 25, 2017
1 parent 3dccfa1 commit 8bdd5a8
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/Cake.Common.Tests/Unit/Tools/MSTest/MSTestRunnerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ public void Should_Use_MSTest_From_Tool_Path_If_Provided_On_Windows(string toolP
[InlineData("/ProgramFilesX86/Microsoft Visual Studio 12.0/Common7/IDE/mstest.exe")]
[InlineData("/ProgramFilesX86/Microsoft Visual Studio 11.0/Common7/IDE/mstest.exe")]
[InlineData("/ProgramFilesX86/Microsoft Visual Studio 10.0/Common7/IDE/mstest.exe")]
[InlineData("/ProgramFilesX86/Microsoft Visual Studio/2017/Enterprise/Common7/IDE/mstest.exe")]
[InlineData("/ProgramFilesX86/Microsoft Visual Studio/2017/Professional/Common7/IDE/mstest.exe")]
[InlineData("/ProgramFilesX86/Microsoft Visual Studio/2017/Community/Common7/IDE/mstest.exe")]
public void Should_Use_Available_Tool_Path(string existingToolPath)
{
// Given
Expand Down
20 changes: 18 additions & 2 deletions src/Cake.Common/Tools/MSTest/MSTestRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -114,9 +114,18 @@ protected override IEnumerable<string> GetToolExecutableNames()
/// <returns>The default tool path.</returns>
protected override IEnumerable<FilePath> GetAlternativeToolPaths(MSTestSettings settings)
{
foreach (var yearAndEdition in new[] { "2017/Enterprise", "2017/Professional", "2017/Community" })
{
var path = GetYearAndEditionToolPath(yearAndEdition);
if (_fileSystem.Exist(path))
{
yield return path;
}
}

foreach (var version in new[] { "14.0", "12.0", "11.0", "10.0" })
{
var path = GetToolPath(version);
var path = GetVersionNumberToolPath(version);
if (_fileSystem.Exist(path))
{
yield return path;
Expand All @@ -133,13 +142,20 @@ protected override IEnumerable<FilePath> GetAlternativeToolPaths(MSTestSettings
}
}

private FilePath GetToolPath(string version)
private FilePath GetVersionNumberToolPath(string version)
{
var programFiles = _environment.GetSpecialPath(SpecialPath.ProgramFilesX86);
var root = programFiles.Combine(string.Concat("Microsoft Visual Studio ", version, "/Common7/IDE"));
return root.CombineWithFilePath("mstest.exe");
}

private FilePath GetYearAndEditionToolPath(string yearAndEdition)
{
var programFiles = _environment.GetSpecialPath(SpecialPath.ProgramFilesX86);
var root = programFiles.Combine(string.Concat("Microsoft Visual Studio/", yearAndEdition, "/Common7/IDE"));
return root.CombineWithFilePath("mstest.exe");
}

private FilePath GetCommonToolPath(string environmentVariable)
{
var visualStudioCommonToolsPath = _environment.GetEnvironmentVariable(environmentVariable);
Expand Down

0 comments on commit 8bdd5a8

Please sign in to comment.