private (TestSetupData, IList <string>) GenerateWorkspace() { var virtualEnvName = "virtualEnv"; var mockWorkspace = WorkspaceTestHelper.CreateMockWorkspace(WorkspaceTestHelper.CreateWorkspaceFolder(), WorkspaceTestHelper.Python37Id); var optionsService = new WorkspaceTestHelper.MockOptionsService(WorkspaceTestHelper.DefaultFactory); var includedWorkspaceFilePaths = GenerateWorkspaceFiles(mockWorkspace.Location, virtualEnvName, out string virtualEnvPath); includedWorkspaceFilePaths.Add(Path.Combine(mockWorkspace.Location, "app.py")); //Created by WorkspaceTestHelper.CreateWorkspaceFolder() var workspaceInterpreterFactories = new List <IPythonInterpreterFactory>() { new MockPythonInterpreterFactory( new VisualStudioInterpreterConfiguration("Python|3.7", "Fake interpreter 3.7", Path.Combine(mockWorkspace.Location, virtualEnvName), virtualEnvPath) ) }; var registryService = new WorkspaceTestHelper.MockRegistryService(workspaceInterpreterFactories); var testDataSetup = new TestSetupData { OptionsService = optionsService, RegistryService = registryService, Workspace = mockWorkspace, }; return(testDataSetup, includedWorkspaceFilePaths); }
public void RemoveInterpreterNotInUse() { 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)) { 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 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)) { 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 UnavailableInterpreter() { TestSetupData 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 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); } }