public void FindOlderVisualStudioEnvironmentByEnvironmentVariable(bool is64BitMSbuild) { using (var env = new EmptyVSEnviroment("15.0")) { var msbuildBinDirectory = is64BitMSbuild ? Path.Combine(env.BuildDirectory, "amd64") : env.BuildDirectory; var msBuildPath = Path.Combine(msbuildBinDirectory, MSBuildExeName); var msBuildConfig = Path.Combine(msbuildBinDirectory, $"{MSBuildExeName}.config"); var vsMSBuildDirectory = Path.Combine(env.TempFolderRoot, "MSBuild"); env.WithEnvironment("MSBUILD_EXE_PATH", msBuildPath); BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.VisualStudio); BuildEnvironmentHelper.Instance.MSBuildExtensionsPath.ShouldBe(vsMSBuildDirectory); BuildEnvironmentHelper.Instance.CurrentMSBuildToolsDirectory.ShouldBe(msbuildBinDirectory); BuildEnvironmentHelper.Instance.CurrentMSBuildExePath.ShouldBe(msBuildPath); BuildEnvironmentHelper.Instance.CurrentMSBuildConfigurationFile.ShouldBe(msBuildConfig); // This code is not running inside the Visual Studio devenv.exe process BuildEnvironmentHelper.Instance.RunningInVisualStudio.ShouldBeFalse(); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBe(env.TempFolderRoot); BuildEnvironmentHelper.Instance.RunningTests.ShouldBeFalse(); } }
public void BuildEnvironmentDetectsVisualStudioByBlendProcess() { using (var env = new EmptyVSEnviroment()) { BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.BlendPath, () => env.MSBuildExePath, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.RunningInVisualStudio.ShouldBeTrue(); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBe(env.TempFolderRoot); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.VisualStudio); } }
public void BuildEnvironmentDetectsVisualStudioByProcessName() { using (var env = new EmptyVSEnviroment()) { BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.DevEnvPath, () => env.MSBuildExePath, ReturnNull, env.VsInstanceMock, env.EnvironmentMock); Assert.True(BuildEnvironmentHelper.Instance.RunningInVisualStudio); Assert.Equal(env.TempFolderRoot, BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory); Assert.Equal(BuildEnvironmentMode.VisualStudio, BuildEnvironmentHelper.Instance.Mode); } }
public void BuildEnvironmentDetectsVisualStudioByMSBuildProcess() { using (var env = new EmptyVSEnviroment()) { // We only know we're in msbuild.exe, we should still be able to attempt to find Visual Studio BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.MSBuildExePath, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock); Assert.Equal(env.TempFolderRoot, BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory); Assert.Equal(BuildEnvironmentMode.VisualStudio, BuildEnvironmentHelper.Instance.Mode); } }
public void BuildEnvironmentDetectsVisualStudioByMSBuildProcessAmd64() { using (var env = new EmptyVSEnviroment()) { // We only know we're in amd64\msbuild.exe, we should still be able to attempt to find Visual Studio BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.MSBuildExePath64, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBe(env.TempFolderRoot); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.VisualStudio); } }
public void BuildEnvironmentDetectsVisualStudioByEnvironment() { using (var env = new EmptyVSEnviroment()) { env.WithEnvironment("VSINSTALLDIR", env.TempFolderRoot); env.WithEnvironment("VisualStudioVersion", MSBuildConstants.CurrentVisualStudioVersion); BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBe(env.TempFolderRoot); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.VisualStudio); } }
public void BuildEnvironmentFindsAmd64() { using (var env = new EmptyVSEnviroment()) { BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.DevEnvPath, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock); Assert.Equal(env.BuildDirectory, BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32); Assert.Equal(env.BuildDirectory64, BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64); Assert.Equal(BuildEnvironmentMode.VisualStudio, BuildEnvironmentHelper.Instance.Mode); } }
public void BuildEnvironmentDetectsVisualStudioByEnvironment() { using (var env = new EmptyVSEnviroment()) { env.WithEnvironment("VSINSTALLDIR", env.TempFolderRoot); env.WithEnvironment("VisualStudioVersion", "15.0"); BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock); Assert.Equal(env.TempFolderRoot, BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory); Assert.Equal(BuildEnvironmentMode.VisualStudio, BuildEnvironmentHelper.Instance.Mode); } }
public void BuildEnvironmentFindsAmd64RunningInAmd64() { using (var env = new EmptyVSEnviroment()) { BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.MSBuildExePath64, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64.ShouldBe(env.BuildDirectory64); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBe(env.TempFolderRoot); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.VisualStudio); } }
public void BuildEnvironmentDetectsVisualStudioFromSetupInstance() { using (var env = new EmptyVSEnviroment()) { env.WithVsInstance(new VisualStudioInstance("Invalid path", @"c:\_doesnotexist", new Version("15.0"))); env.WithVsInstance(new VisualStudioInstance("VS", env.TempFolderRoot, new Version("15.0"))); // This test has no context to find MSBuild other than Visual Studio root. BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock); Assert.Equal(env.TempFolderRoot, BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory); Assert.Equal(BuildEnvironmentMode.VisualStudio, BuildEnvironmentHelper.Instance.Mode); } }
public void FindBuildEnvironmentFromRunningProcessVisualStudio() { using (var env = new EmptyVSEnviroment()) { // All we know about is path to msbuild.exe as the current process BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, () => env.MSBuildExePath, ReturnNull, env.VsInstanceMock, env.EnvironmentMock); Assert.Equal(env.BuildDirectory, BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32); Assert.Equal(env.BuildDirectory64, BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64); Assert.False(BuildEnvironmentHelper.Instance.RunningInVisualStudio); Assert.False(BuildEnvironmentHelper.Instance.RunningTests); Assert.Equal(BuildEnvironmentMode.VisualStudio, BuildEnvironmentHelper.Instance.Mode); } }
public void FindBuildEnvironmentFromCommandLineVisualStudio() { using (var env = new EmptyVSEnviroment()) { // 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, () => false); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64.ShouldBe(env.BuildDirectory64); BuildEnvironmentHelper.Instance.RunningInVisualStudio.ShouldBeFalse(); BuildEnvironmentHelper.Instance.RunningTests.ShouldBeFalse(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.VisualStudio); } }
public void BuildEnvironmentVisualStudioNotFoundWhenVersionMismatch() { using (var env = new EmptyVSEnviroment()) { env.WithVsInstance(new VisualStudioInstance("Invalid path", @"c:\_doesnotexist", new Version("15.0"))); env.WithVsInstance(new VisualStudioInstance("VS", env.TempFolderRoot, new Version("14.0"))); // This test has no context to find MSBuild other than Visual Studio root. BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBeNull(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.None); } }
public void FindBuildEnvironmentFromCommandLineVisualStudio() { using (var env = new EmptyVSEnviroment()) { // All we know about is path to msbuild.exe as the command-line arg[0] // FIXME: we have added a func for command line arg now.. does this need to be changed? BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.MSBuildExePath, ReturnNull, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock); Assert.Equal(env.BuildDirectory, BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32); Assert.Equal(env.BuildDirectory64, BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64); Assert.False(BuildEnvironmentHelper.Instance.RunningInVisualStudio); Assert.False(BuildEnvironmentHelper.Instance.RunningTests); Assert.Equal(BuildEnvironmentMode.VisualStudio, BuildEnvironmentHelper.Instance.Mode); } }
public void BuildEnvironmentVSFromMSBuildAssemblyAmd64() { using (var env = new EmptyVSEnviroment()) { var msBuildAssembly = Path.Combine(env.BuildDirectory64, "Microsoft.Build.dll"); BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, () => msBuildAssembly, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64.ShouldBe(env.BuildDirectory64); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBe(env.TempFolderRoot); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.VisualStudio); } }
public void FindBuildEnvironmentFromVisualStudioRoot() { using (var env = new EmptyVSEnviroment()) { // All we know about is path to DevEnv.exe BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.DevEnvPath, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock); Assert.Equal(env.BuildDirectory, BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32); Assert.Equal(env.BuildDirectory64, BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64); Assert.Equal(env.TempFolderRoot, BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory); Assert.True(BuildEnvironmentHelper.Instance.RunningInVisualStudio); Assert.False(BuildEnvironmentHelper.Instance.RunningTests); Assert.Equal(BuildEnvironmentMode.VisualStudio, BuildEnvironmentHelper.Instance.Mode); } }
public void FindBuildEnvironmentFromVisualStudioRoot() { using (var env = new EmptyVSEnviroment()) { // All we know about is path to DevEnv.exe BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(() => env.DevEnvPath, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory32.ShouldBe(env.BuildDirectory); BuildEnvironmentHelper.Instance.MSBuildToolsDirectory64.ShouldBe(env.BuildDirectory64); BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBe(env.TempFolderRoot); BuildEnvironmentHelper.Instance.RunningInVisualStudio.ShouldBeTrue(); BuildEnvironmentHelper.Instance.RunningTests.ShouldBeFalse(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.VisualStudio); } }
public void BuildEnvironmentDetectsVisualStudioByEnvironment(string visualStudioVersion, bool shouldBeValid) { using (var env = new EmptyVSEnviroment()) { env.WithEnvironment("VSINSTALLDIR", env.TempFolderRoot); env.WithEnvironment("VisualStudioVersion", visualStudioVersion); BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); if (shouldBeValid) { BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBe(env.TempFolderRoot); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.VisualStudio); } else { // Ensure that no VS instance was found (older versions that shouldn't be discovered). BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBeNull(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.None); } } }
public void BuildEnvironmentDetectsVisualStudioFromSetupInstance(string visualStudioVersion, bool shouldBeValid) { using (var env = new EmptyVSEnviroment()) { env.WithVsInstance(new VisualStudioInstance("Invalid path", @"c:\_doesnotexist", new Version(visualStudioVersion))); env.WithVsInstance(new VisualStudioInstance("VS", env.TempFolderRoot, new Version(visualStudioVersion))); // This test has no context to find MSBuild other than Visual Studio root. BuildEnvironmentHelper.ResetInstance_ForUnitTestsOnly(ReturnNull, ReturnNull, ReturnNull, env.VsInstanceMock, env.EnvironmentMock, () => false); if (shouldBeValid) { BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBe(env.TempFolderRoot); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.VisualStudio); } else { // Ensure that no VS instance was found (older versions that shouldn't be discovered). BuildEnvironmentHelper.Instance.VisualStudioInstallRootDirectory.ShouldBeNull(); BuildEnvironmentHelper.Instance.Mode.ShouldBe(BuildEnvironmentMode.None); } } }