private (TestSetupData, IList <string>) GenerateWorkspace() { var virtualEnvName = "virtualEnv"; WorkspaceTestHelper.MockWorkspace mockWorkspace = WorkspaceTestHelper.CreateMockWorkspace(WorkspaceTestHelper.CreateWorkspaceFolder(), WorkspaceTestHelper.Python37Id); WorkspaceTestHelper.MockOptionsService 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) ) }; WorkspaceTestHelper.MockRegistryService registryService = new WorkspaceTestHelper.MockRegistryService(workspaceInterpreterFactories); TestSetupData testDataSetup = new TestSetupData { OptionsService = optionsService, RegistryService = registryService, Workspace = mockWorkspace, }; return(testDataSetup, includedWorkspaceFilePaths); }
public void AlreadyOpenedWorkspace() { var workspaceFolder = WorkspaceTestHelper.CreateWorkspaceFolder(); WorkspaceTestHelper.MockWorkspace workspace = WorkspaceTestHelper.CreateMockWorkspace(workspaceFolder, WorkspaceTestHelper.PythonNoId); WorkspaceTestHelper.MockWorkspaceService workspaceService = new WorkspaceTestHelper.MockWorkspaceService(workspace); WorkspaceTestHelper.MockOptionsService optionsService = new WorkspaceTestHelper.MockOptionsService(WorkspaceTestHelper.DefaultFactory); WorkspaceTestHelper.MockRegistryService registryService = new WorkspaceTestHelper.MockRegistryService(WorkspaceTestHelper.AllFactories); var provider = new PythonWorkspaceContextProvider( workspaceService, new Lazy <IInterpreterOptionsService>(() => optionsService), new Lazy <IInterpreterRegistryService>(() => registryService), new JoinableTaskContext() ); Assert.AreEqual(workspaceFolder, provider.Workspace.Location); Assert.AreEqual(WorkspaceTestHelper.DefaultFactory, provider.Workspace.CurrentFactory); }
public void SwitchWorkspace() { var workspaceFolder1 = WorkspaceTestHelper.CreateWorkspaceFolder(); var workspaceFolder2 = WorkspaceTestHelper.CreateWorkspaceFolder(); WorkspaceTestHelper.MockWorkspace workspace1 = WorkspaceTestHelper.CreateMockWorkspace(workspaceFolder1, WorkspaceTestHelper.Python27Id); WorkspaceTestHelper.MockWorkspace workspace2 = WorkspaceTestHelper.CreateMockWorkspace(workspaceFolder2, WorkspaceTestHelper.Python37Id); WorkspaceTestHelper.MockWorkspaceService workspaceService = new WorkspaceTestHelper.MockWorkspaceService(workspace1); WorkspaceTestHelper.MockOptionsService optionsService = new WorkspaceTestHelper.MockOptionsService(WorkspaceTestHelper.DefaultFactory); WorkspaceTestHelper.MockRegistryService registryService = new WorkspaceTestHelper.MockRegistryService(WorkspaceTestHelper.AllFactories); var provider = new PythonWorkspaceContextProvider( workspaceService, new Lazy <IInterpreterOptionsService>(() => optionsService), new Lazy <IInterpreterRegistryService>(() => registryService), new JoinableTaskContext() ); Assert.AreEqual(workspaceFolder1, provider.Workspace.Location); Assert.AreEqual(WorkspaceTestHelper.Python27Factory, provider.Workspace.CurrentFactory); using (var openEvent = new AutoResetEvent(false)) using (var initEvent = new AutoResetEvent(false)) using (var closingEvent = new AutoResetEvent(false)) using (var closedEvent = new AutoResetEvent(false)) { provider.WorkspaceOpening += (sender, e) => { openEvent.Set(); }; provider.WorkspaceInitialized += (sender, e) => { initEvent.Set(); }; provider.WorkspaceClosed += (sender, e) => { closedEvent.Set(); }; provider.WorkspaceClosing += (sender, e) => { closingEvent.Set(); }; workspaceService.SimulateChangeWorkspace(workspace2); Assert.IsTrue(openEvent.WaitOne(1000), $"Expected {nameof(provider.WorkspaceOpening)}."); Assert.IsTrue(initEvent.WaitOne(1000), $"Expected {nameof(provider.WorkspaceInitialized)}."); Assert.IsTrue(closingEvent.WaitOne(1000), $"Expected {nameof(provider.WorkspaceClosing)}."); Assert.IsTrue(closedEvent.WaitOne(1000), $"Expected {nameof(provider.WorkspaceClosed)}."); Assert.AreEqual(workspaceFolder2, provider.Workspace.Location); Assert.AreEqual(WorkspaceTestHelper.Python37Factory, provider.Workspace.CurrentFactory); } }