Пример #1
0
        public void WebProjectCreateVirtualEnvOnNew() {
            using (var app = new PythonVisualStudioApp()) {
                var t = Task.Run(() => app.CreateProject(
                    PythonVisualStudioApp.TemplateLanguageName,
                    PythonVisualStudioApp.FlaskWebProjectTemplate,
                    TestData.GetTempPath(),
                    "WebProjectCreateVirtualEnvOnNew",
                    suppressUI: false
                ));

                using (var dlg = new AutomationDialog(app, AutomationElement.FromHandle(app.WaitForDialog(t)))) {
                    // Create a virtual environment
                    dlg.ClickButtonAndClose("CommandLink_1000", nameIsAutomationId: true);
                }

                using (var dlg = new AutomationDialog(app, AutomationElement.FromHandle(app.WaitForDialog(t)))) {
                    dlg.ClickButtonByAutomationId("Create");
                    dlg.ClickButtonAndClose("Close", nameIsAutomationId: true);
                }
                
                var project = t.WaitAndUnwrapExceptions();

                var contextProvider = app.ComponentModel.GetService<VsProjectContextProvider>();
                for (int retries = 20; retries > 0; --retries) {
                    if (contextProvider.IsProjectSpecific(project.GetPythonProject().ActiveInterpreter.Configuration)) {
                        break;
                    }
                    Thread.Sleep(1000);
                }
                Assert.IsTrue(contextProvider.IsProjectSpecific(project.GetPythonProject().ActiveInterpreter.Configuration), "Did not have virtualenv");
                
                for (int retries = 60; retries > 0; --retries) {
                    if (project.GetPythonProject().ActiveInterpreter.FindModules("flask").Any()) {
                        break;
                    }
                    Thread.Sleep(1000);
                }
                AssertUtil.ContainsExactly(project.GetPythonProject().ActiveInterpreter.FindModules("flask"), "flask");
            }
        }