public void BuildEnvironmentFindsAmd64NoVS() { using (var env = new EmptyStandaloneEnviroment(MSBuildExeName, writeFakeFiles: true, includeAmd64Folder: true)) { BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.MSBuildExePath, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64.ShouldBe(Path.Combine(env.BuildDirectory, "amd64")); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.Standalone); } }
public void BuildEnvironmentNoneWhenNotAvailable() { using (var env = new EmptyStandaloneEnviroment(MSBuildExeName)) { var entryProcess = Path.Combine(Path.GetTempPath(), "foo.exe"); BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => entryProcess, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.CurrentMSBuildExePath.ShouldBe(entryProcess); BuildEnvironmentHelper.Instance.CurrentMSBuildToolsDirectory.ShouldBe(Path.GetDirectoryName(entryProcess)); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBeNull(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.None); } }
public void BuildEnvironmentFindsAmd64RunningInAmd64NoVS() { using (var env = new EmptyStandaloneEnviroment(MSBuildExeName, writeFakeFiles: true, includeAmd64Folder: true)) { var msBuild64Exe = Path.Combine(env.BuildDirectory, "amd64", MSBuildExeName); BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => msBuild64Exe, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64.ShouldBe(Path.Combine(env.BuildDirectory, "amd64")); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBeNull(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.Standalone); } }
public void FindBuildEnvironmentFromExecutingAssemblyAsDll() { // Ensure the correct file is found (.dll not .exe) using (var env = new EmptyStandaloneEnviroment("MSBuild.dll")) { // All we know about is path to msbuild.exe as the current process BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, () => env.MSBuildExePath, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.RunningInVisualStudio.ShouldBeFalse(); BuildEnvironmentHelper.Instance.RunningTests.ShouldBeFalse(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.Standalone); } }
public void FindBuildEnvironmentFromRunningProcessStandalone() { // Path will not be under a Visual Studio install like path. using (var env = new EmptyStandaloneEnviroment(MSBuildExeName)) { // All we know about is path to msbuild.exe as the current process BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, () => env.MSBuildExePath, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.RunningInVisualStudio.ShouldBeFalse(); BuildEnvironmentHelper.Instance.RunningTests.ShouldBeFalse(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.Standalone); } }
public void FindBuildEnvironmentFromCommandLineStandalone() { // Path will not be under a Visual Studio install like path. using (var env = new EmptyStandaloneEnviroment(MSBuildExeName)) { // All we know about is path to msbuild.exe as the command-line arg[0] BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.MSBuildExePath, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock); Assert.Equal(env.BuildDirectory, BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32); Assert.Equal(env.BuildDirectory, BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64); Assert.False(BuildEnvironmentHelper.Instance.RunningInVisualStudio); Assert.False(BuildEnvironmentHelper.Instance.RunningTests); Assert.Equal(BuildEnvironmentMode.Standalone, BuildEnvironmentHelper.Instance.Mode); } }
public void FindBuildEnvironmentFromAppContextDirectory() { using (var env = new EmptyStandaloneEnviroment(MSBuildExeName)) { // Only the app base directory will be available BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, ReturnNull, () => env.BuildDirectory, env.VsInstanceMock, env.EnvironmentMock, () => false); // Make sure we get the right MSBuild entry point. On .NET Core this will be MSBuild.dll, otherwise MSBuild.exe Path.GetFileName(BuildEnvironmentHelper.Instance.CurrentMSBuildExePath).ShouldBe(MSBuildExeName); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.RunningInVisualStudio.ShouldBeFalse(); BuildEnvironmentHelper.Instance.RunningTests.ShouldBeFalse(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.Standalone); } }
public void FindBuildEnvironmentByEnvironmentVariable() { using (var env = new EmptyStandaloneEnviroment(MSBuildExeName)) { var path = env.BuildDirectory; var msBuildPath = Path.Combine(path, MSBuildExeName); var msBuildConfig = Path.Combine(path, $"{MSBuildExeName}.config"); env.WithEnvironment("MSBUILD_EXE_PATH", env.MSBuildExePath); BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.CurrentMSBuildToolsDirectory.ShouldBe(path); BuildEnvironmentHelper.Instance.CurrentMSBuildExePath.ShouldBe(msBuildPath); BuildEnvironmentHelper.Instance.CurrentMSBuildConfigurationFile.ShouldBe(msBuildConfig); BuildEnvironmentHelper.Instance.RunningInVisualStudio.ShouldBeFalse(); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBeNull(); BuildEnvironmentHelper.Instance.RunningTests.ShouldBeFalse(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.Standalone); } }