public void WatchWorkspaceFolderChanged() { var workspaceFolder1 = TestData.GetTempPath(); Directory.CreateDirectory(workspaceFolder1); File.WriteAllText(Path.Combine(workspaceFolder1, "app1.py"), string.Empty); var workspaceFolder2 = TestData.GetTempPath(); Directory.CreateDirectory(workspaceFolder2); File.WriteAllText(Path.Combine(workspaceFolder2, "app2.py"), string.Empty); var workspace1 = new WorkspaceTestHelper.MockWorkspace(workspaceFolder1); var workspace2 = new WorkspaceTestHelper.MockWorkspace(workspaceFolder2); var workspaceContext1 = new WorkspaceTestHelper.MockWorkspaceContext(workspace1); var workspaceContext2 = new WorkspaceTestHelper.MockWorkspaceContext(workspace2); var workspaceContextProvider = new WorkspaceTestHelper.MockWorkspaceContextProvider(workspaceContext1); using (var factoryProvider = new WorkspaceInterpreterFactoryProvider(workspaceContextProvider)) { // Load a different workspace Action triggerDiscovery = () => { workspaceContextProvider.SimulateChangeWorkspace(workspaceContext2); }; TestTriggerDiscovery(workspaceContext1, triggerDiscovery, workspaceContextProvider, true); } }
public void DetectLocalEnvOutsideWorkspace() { var python = PythonPaths.Python37_x64 ?? PythonPaths.Python37; var tempFolder = TestData.GetTempPath(); var workspaceFolder = Path.Combine(tempFolder, "workspace"); var envFolder = Path.Combine(tempFolder, "outside"); Directory.CreateDirectory(workspaceFolder); File.WriteAllText(Path.Combine(workspaceFolder, "app.py"), string.Empty); // Create virtual env outside the workspace folder using (var p = ProcessOutput.RunHiddenAndCapture(python.InterpreterPath, "-m", "venv", envFolder)) { Console.WriteLine(p.Arguments); p.Wait(); Console.WriteLine(string.Join(Environment.NewLine, p.StandardOutputLines.Concat(p.StandardErrorLines))); Assert.AreEqual(0, p.ExitCode); } // Normally a local virtual environment outside the workspace // wouldn't be detected, but it is when it's referenced from // the workspace python settings. WorkspaceTestHelper.MockWorkspace workspace = new WorkspaceTestHelper.MockWorkspace(workspaceFolder); WorkspaceTestHelper.MockWorkspaceContext workspaceContext = new WorkspaceTestHelper.MockWorkspaceContext(workspace, @"..\outside\scripts\python.exe"); WorkspaceTestHelper.MockWorkspaceContextProvider workspaceContextProvider = new WorkspaceTestHelper.MockWorkspaceContextProvider(workspaceContext); using (var factoryProvider = new WorkspaceInterpreterFactoryProvider(workspaceContextProvider)) { workspaceContextProvider.SimulateChangeWorkspace(workspaceContext); var configs = factoryProvider.GetInterpreterConfigurations().ToArray(); Assert.AreEqual(1, configs.Length); Assert.IsTrue(PathUtils.IsSamePath( Path.Combine(envFolder, "scripts", "python.exe"), configs[0].InterpreterPath )); Assert.AreEqual("Workspace|Workspace|outside", configs[0].Id); } }