private static async Task <VsProjectAnalyzer> CreateAnalyzerAsync(PythonVersion version) { version.AssertInstalled(); var factory = new MockPythonInterpreterFactory(version.Configuration); var sp = new MockServiceProvider(); var services = new Microsoft.PythonTools.Editor.PythonEditorServices(sp); var interpreters = new MockInterpreterOptionsService(); interpreters.AddProvider(new MockPythonInterpreterFactoryProvider("Test Provider", factory)); services.InterpreterRegistryService = interpreters; services.InterpreterOptionsService = interpreters; return(await VsProjectAnalyzer.CreateForTestsAsync( services, factory )); }
public void RemovedModule() { var id = Guid.NewGuid().ToString(); var config = new InterpreterConfiguration(id, id, new Version(3, 5)); var fact = new MockPythonInterpreterFactory(config); var interp = new MockPythonInterpreter(fact); var modules = new ModuleTable(null, interp); var orig = modules.Select(kv => kv.Key).ToSet(); interp.AddModule("test", new MockPythonModule("test")); ModuleReference modref; Assert.IsTrue(modules.TryImport("test", out modref)); interp.RemoveModule("test", retainName: true); modules.ReInit(); Assert.IsFalse(modules.TryImport("test", out modref)); }
public void RefreshDBStates() { using (var fact = new MockPythonInterpreterFactory( Guid.NewGuid(), "Test Factory 1", MockInterpreterConfiguration( PythonPaths.Versions.First().InterpreterPath ), true )) using (var wpf = new WpfProxy()) using (var list = new EnvironmentListProxy(wpf)) { list.CreateDBExtension = true; var mockService = new MockInterpreterOptionsService(); mockService.AddProvider(new MockPythonInterpreterFactoryProvider("Test Provider 1", fact)); list.Service = mockService; var view = list.Environments.Single(); Assert.IsFalse(wpf.Invoke(() => view.IsRefreshingDB)); Assert.IsTrue(list.CanExecute(DBExtension.StartRefreshDB, view)); Assert.IsFalse(fact.IsCurrent); Assert.AreEqual(MockPythonInterpreterFactory.NoDatabaseReason, fact.GetIsCurrentReason(null)); list.Execute(DBExtension.StartRefreshDB, view).GetAwaiter().GetResult(); for (int retries = 10; retries > 0 && !wpf.Invoke(() => view.IsRefreshingDB); --retries) { Thread.Sleep(200); } Assert.IsTrue(wpf.Invoke(() => view.IsRefreshingDB)); Assert.IsFalse(list.CanExecute(DBExtension.StartRefreshDB, view)); Assert.IsFalse(fact.IsCurrent); Assert.AreEqual(MockPythonInterpreterFactory.GeneratingReason, fact.GetIsCurrentReason(null)); fact.EndGenerateCompletionDatabase(AnalyzerStatusUpdater.GetIdentifier(fact), false); for (int retries = 10; retries > 0 && wpf.Invoke(() => view.IsRefreshingDB); --retries) { Thread.Sleep(1000); } Assert.IsFalse(wpf.Invoke(() => view.IsRefreshingDB)); Assert.IsTrue(list.CanExecute(DBExtension.StartRefreshDB, view)); Assert.IsFalse(fact.IsCurrent); Assert.AreEqual(MockPythonInterpreterFactory.MissingModulesReason, fact.GetIsCurrentReason(null)); list.Execute(DBExtension.StartRefreshDB, view).GetAwaiter().GetResult(); Assert.IsTrue(wpf.Invoke(() => view.IsRefreshingDB)); Assert.IsFalse(list.CanExecute(DBExtension.StartRefreshDB, view)); Assert.IsFalse(fact.IsCurrent); Assert.AreEqual(MockPythonInterpreterFactory.GeneratingReason, fact.GetIsCurrentReason(null)); fact.EndGenerateCompletionDatabase(AnalyzerStatusUpdater.GetIdentifier(fact), true); for (int retries = 10; retries > 0 && wpf.Invoke(() => view.IsRefreshingDB); --retries) { Thread.Sleep(1000); } Assert.IsFalse(wpf.Invoke(() => view.IsRefreshingDB)); Assert.IsTrue(list.CanExecute(DBExtension.StartRefreshDB, view)); Assert.IsTrue(fact.IsCurrent); Assert.AreEqual(MockPythonInterpreterFactory.UpToDateReason, fact.GetIsCurrentReason(null)); Assert.AreEqual(MockPythonInterpreterFactory.UpToDateReason, fact.GetIsCurrentReason(null)); } }