Skip to content

Commit

Permalink
Adjusted MSTest tool resolution
Browse files Browse the repository at this point in the history
* Added fallback to check environment for VisualStudio path if not found in default location
* Fixes cake-build#823
  • Loading branch information
devlead committed Apr 15, 2016
1 parent f412de4 commit 6297f38
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 0 deletions.
21 changes: 21 additions & 0 deletions src/Cake.Common.Tests/Unit/Tools/MSTest/MSTestRunnerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -212,5 +212,26 @@ public void Should_Add_Testcontainer_For_Each_Assembly()
// Then
Assert.Equal("\"/testcontainer:/Working/Test1.dll\" \"/testcontainer:/Working/Test2.dll\" /noisolation", result.Args);
}

[Theory]
[InlineData("/NonStandardPath/Microsoft Visual Studio 14.0/Common7/IDE/mstest.exe", "VS140COMNTOOLS", "/NonStandardPath/Microsoft Visual Studio 14.0/Common7/Tools/")]
[InlineData("/NonStandardPath/Microsoft Visual Studio 13.0/Common7/IDE/mstest.exe", "VS130COMNTOOLS", "/NonStandardPath/Microsoft Visual Studio 13.0/Common7/Tools/")]
[InlineData("/NonStandardPath/Microsoft Visual Studio 12.0/Common7/IDE/mstest.exe", "VS120COMNTOOLS", "/NonStandardPath/Microsoft Visual Studio 12.0/Common7/Tools/")]
[InlineData("/NonStandardPath/Microsoft Visual Studio 11.0/Common7/IDE/mstest.exe", "VS110COMNTOOLS", "/NonStandardPath/Microsoft Visual Studio 11.0/Common7/Tools/")]
[InlineData("/NonStandardPath/Microsoft Visual Studio 10.0/Common7/IDE/mstest.exe", "VS100COMNTOOLS", "/NonStandardPath/Microsoft Visual Studio 10.0/Common7/Tools/")]
public void Should_Use_Available_Environment_Tool_Path(string existingToolPath, string environmentName, string environmentValue)
{
// Given
var fixture = new MSTestRunnerFixture();
fixture.GivenDefaultToolDoNotExist();
fixture.FileSystem.CreateFile(existingToolPath);
fixture.Environment.SetEnvironmentVariable(environmentName, environmentValue);

// When
var result = fixture.Run();

// Then
Assert.Equal(existingToolPath, result.Path.FullPath);
}
}
}
22 changes: 22 additions & 0 deletions src/Cake.Common/Tools/MSTest/MSTestRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,15 @@ protected override IEnumerable<FilePath> GetAlternativeToolPaths(MSTestSettings
yield return path;
}
}

foreach (var environmentVariable in new[] { "VS140COMNTOOLS", "VS130COMNTOOLS", "VS120COMNTOOLS", "VS110COMNTOOLS", "VS100COMNTOOLS" })
{
var path = GetCommonToolPath(environmentVariable);
if (path != null && _fileSystem.Exist(path))
{
yield return path;
}
}
}

private FilePath GetToolPath(string version)
Expand All @@ -112,5 +121,18 @@ private FilePath GetToolPath(string version)
var root = programFiles.Combine(string.Concat("Microsoft Visual Studio ", version, "/Common7/IDE"));
return root.CombineWithFilePath("mstest.exe");
}

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

if (string.IsNullOrWhiteSpace(visualStudioCommonToolsPath))
{
return null;
}

var root = new DirectoryPath(visualStudioCommonToolsPath).Combine("../IDE").Collapse();
return root.CombineWithFilePath("mstest.exe");
}
}
}

0 comments on commit 6297f38

Please sign in to comment.