public void RemoveInterpreterNotInUse() { var data = PrepareWorkspace(WorkspaceTestHelper.Python27Id); var workspaceContext = new PythonWorkspaceContext(data.Workspace, data.OptionsService, data.RegistryService); workspaceContext.Initialize(); var interpreter = workspaceContext.ReadInterpreterSetting(); Assert.AreEqual(WorkspaceTestHelper.Python27Id, interpreter); Assert.AreEqual(WorkspaceTestHelper.Python27Factory, workspaceContext.CurrentFactory); using (var activeInterpreterEvent = new AutoResetEvent(false)) { workspaceContext.ActiveInterpreterChanged += (sender, e) => { activeInterpreterEvent.Set(); }; // Uninstall Python 3.7 - not in use var newFactories = WorkspaceTestHelper.AllFactories.Except(WorkspaceTestHelper.Python37Factory); data.RegistryService.SimulateChangeInterpreters(newFactories); Assert.IsFalse(activeInterpreterEvent.WaitOne(1000), "Should not have raised ActiveInterpreterChanged."); var updatedInterpreter = workspaceContext.ReadInterpreterSetting(); Assert.AreEqual(WorkspaceTestHelper.Python27Id, updatedInterpreter); Assert.AreEqual(WorkspaceTestHelper.Python27Factory, workspaceContext.CurrentFactory); } }
public void ChangeDefaultInterpreterNotInUse() { // We don't use the global default var data = PrepareWorkspace(WorkspaceTestHelper.Python27Id); var workspaceContext = new PythonWorkspaceContext(data.Workspace, data.OptionsService, data.RegistryService); workspaceContext.Initialize(); var interpreter = workspaceContext.ReadInterpreterSetting(); Assert.AreEqual(WorkspaceTestHelper.Python27Id, interpreter); Assert.AreEqual(WorkspaceTestHelper.Python27Factory, workspaceContext.CurrentFactory); using (var activeInterpreterEvent = new AutoResetEvent(false)) { workspaceContext.ActiveInterpreterChanged += (sender, e) => { activeInterpreterEvent.Set(); }; data.OptionsService.SimulateChangeDefaultInterpreter(WorkspaceTestHelper.Python37Factory); Assert.IsFalse(activeInterpreterEvent.WaitOne(1000), "Should not have raised ActiveInterpreterChanged."); var updatedInterpreter = workspaceContext.ReadInterpreterSetting(); Assert.AreEqual(WorkspaceTestHelper.Python27Id, updatedInterpreter); Assert.AreEqual(WorkspaceTestHelper.Python27Factory, workspaceContext.CurrentFactory); } }
public void ChangeDefaultInterpreterInUse() { TestSetupData data = PrepareWorkspace(WorkspaceTestHelper.PythonNoId); var workspaceContext = new PythonWorkspaceContext(data.Workspace, data.OptionsService, data.RegistryService); workspaceContext.Initialize(); var interpreter = workspaceContext.ReadInterpreterSetting(); Assert.AreEqual(WorkspaceTestHelper.PythonNoId, interpreter); Assert.AreEqual(WorkspaceTestHelper.DefaultFactory, workspaceContext.CurrentFactory); using (var activeInterpreterEvent = new AutoResetEvent(false)) { workspaceContext.ActiveInterpreterChanged += (sender, e) => { activeInterpreterEvent.Set(); }; data.OptionsService.SimulateChangeDefaultInterpreter(WorkspaceTestHelper.Python37Factory); Assert.IsTrue(activeInterpreterEvent.WaitOne(1000), "Failed to raise ActiveInterpreterChanged."); var updatedInterpreter = workspaceContext.ReadInterpreterSetting(); Assert.AreEqual(WorkspaceTestHelper.PythonNoId, updatedInterpreter); Assert.AreEqual(WorkspaceTestHelper.Python37Factory, workspaceContext.CurrentFactory); } }
public void EnumerateWorkspaceFiles() { (var testDataSetup, var includedWorkspaceFilePaths) = GenerateWorkspace(); var workspaceContext = new PythonWorkspaceContext(testDataSetup.Workspace, testDataSetup.OptionsService, testDataSetup.RegistryService); TestRegexOne(workspaceContext, includedWorkspaceFilePaths); TestRegexTwo(workspaceContext, includedWorkspaceFilePaths); }
public void UnavailableInterpreter() { var data = PrepareWorkspace(WorkspaceTestHelper.PythonUnavailableId); var workspaceContext = new PythonWorkspaceContext(data.Workspace, data.OptionsService, data.RegistryService); workspaceContext.Initialize(); var interpreter = workspaceContext.ReadInterpreterSetting(); Assert.AreEqual(WorkspaceTestHelper.PythonUnavailableId, interpreter); Assert.AreEqual(WorkspaceTestHelper.DefaultFactory, workspaceContext.CurrentFactory); }
public void InstalledInterpreter() { TestSetupData data = PrepareWorkspace(WorkspaceTestHelper.Python27Id); var workspaceContext = new PythonWorkspaceContext(data.Workspace, data.OptionsService, data.RegistryService); workspaceContext.Initialize(); var interpreter = workspaceContext.ReadInterpreterSetting(); Assert.AreEqual(WorkspaceTestHelper.Python27Id, interpreter); Assert.AreEqual(WorkspaceTestHelper.Python27Factory, workspaceContext.CurrentFactory); }
private void TestRegexOne(PythonWorkspaceContext workspaceContext, IList <string> includedWorkspaceFilePaths) { var filteredFilePaths = workspaceContext.EnumerateUserFiles( (x) => PythonConstants.TestFileExtensionRegex.IsMatch(PathUtils.GetFileOrDirectoryName(x)) ).ToList(); var expectedFiles = new List <string>(); foreach (var filePath in includedWorkspaceFilePaths) { var fileName = PathUtils.GetFileOrDirectoryName(filePath).ToLower(); if ((fileName.EndsWith(".txt") || fileName.EndsWith(".py"))) { expectedFiles.Add(filePath); } } AssertUtil.CheckCollection(filteredFilePaths, expectedFiles, Enumerable.Empty <string>()); }
public void ChangeInterpreterSetting() { TestSetupData data = PrepareWorkspace(WorkspaceTestHelper.Python27Id); var workspaceContext = new PythonWorkspaceContext(data.Workspace, data.OptionsService, data.RegistryService); workspaceContext.Initialize(); var interpreter = workspaceContext.ReadInterpreterSetting(); Assert.AreEqual(WorkspaceTestHelper.Python27Id, interpreter); Assert.AreEqual(WorkspaceTestHelper.Python27Factory, workspaceContext.CurrentFactory); using (var activeInterpreterEvent = new AutoResetEvent(false)) using (var interpreterSettingEvent = new AutoResetEvent(false)) { workspaceContext.ActiveInterpreterChanged += (sender, e) => { activeInterpreterEvent.Set(); }; workspaceContext.InterpreterSettingChanged += (sender, e) => { interpreterSettingEvent.Set(); }; WorkspaceTestHelper.MockWorkspaceSettings updatedSettings = new WorkspaceTestHelper.MockWorkspaceSettings( new Dictionary <string, string> { { "Interpreter", WorkspaceTestHelper.Python37Id } } ); data.Workspace.SettingsManager.SimulateChangeSettings(updatedSettings); Assert.IsTrue(activeInterpreterEvent.WaitOne(1000), "Failed to raise ActiveInterpreterChanged."); Assert.IsTrue(interpreterSettingEvent.WaitOne(1000), "Failed to raise InterpreterSettingChanged."); var updatedInterpreter = workspaceContext.ReadInterpreterSetting(); Assert.AreEqual(WorkspaceTestHelper.Python37Id, updatedInterpreter); Assert.AreEqual(WorkspaceTestHelper.Python37Factory, workspaceContext.CurrentFactory); } }
private void TestRegexTwo(PythonWorkspaceContext workspaceContext, IList <string> includedWorkspaceFilePaths) { var filteredFilePaths = workspaceContext.EnumerateUserFiles( (x) => PythonConstants.DefaultTestFileNameRegex.IsMatch(PathUtils.GetFileOrDirectoryName(x)) ).ToList(); var expectedFiles = new List <string>(); foreach (var filePath in includedWorkspaceFilePaths) { var fileName = PathUtils.GetFileOrDirectoryName(filePath).ToLower(); if ((fileName.StartsWith("test") && (fileName.EndsWith(".py") || fileName.EndsWith(".txt"))) || fileName.EndsWith("_test.py") || fileName.EndsWith("_test.txt")) { Assert.IsTrue(filteredFilePaths.Remove(filePath)); } } AssertUtil.CheckCollection(filteredFilePaths, expectedFiles, Enumerable.Empty <string>()); }