コード例 #1
0
        public void WatchWorkspaceSettingsChanged()
        {
            var workspaceFolder = TestData.GetTempPath();

            Directory.CreateDirectory(workspaceFolder);
            File.WriteAllText(Path.Combine(workspaceFolder, "app.py"), string.Empty);

            WorkspaceTestHelper.MockWorkspace        workspace        = new WorkspaceTestHelper.MockWorkspace(workspaceFolder);
            WorkspaceTestHelper.MockWorkspaceContext workspaceContext = new WorkspaceTestHelper.MockWorkspaceContext(workspace);

            // Modify settings
            Action triggerDiscovery = () =>
            {
                workspaceContext.SimulateChangeInterpreterSetting("Global|PythonCore|3.7");
            };

            TestTriggerDiscovery(workspaceContext, triggerDiscovery, null, true);
        }
コード例 #2
0
        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);
            }
        }