Ejemplo n.º 1
0
        public void HasInterpreters()
        {
            var sp          = new MockServiceProvider();
            var service     = new InterpreterOptionsService(sp);
            var mockService = new MockInterpreterOptionsService();

            mockService.AddProvider(new MockPythonInterpreterFactoryProvider("Test Provider 1",
                                                                             new MockPythonInterpreterFactory(Guid.NewGuid(), "Test Factory 1", MockInterpreterConfiguration(new Version(2, 7))),
                                                                             new MockPythonInterpreterFactory(Guid.NewGuid(), "Test Factory 2", MockInterpreterConfiguration(new Version(3, 0))),
                                                                             new MockPythonInterpreterFactory(Guid.NewGuid(), "Test Factory 3", MockInterpreterConfiguration(new Version(3, 3)))
                                                                             ));
            mockService.AddProvider(new MockPythonInterpreterFactoryProvider("Test Provider 2",
                                                                             new MockPythonInterpreterFactory(Guid.NewGuid(), "Test Factory 4", MockInterpreterConfiguration(new Version(2, 7))),
                                                                             new MockPythonInterpreterFactory(Guid.NewGuid(), "Test Factory 5", MockInterpreterConfiguration(new Version(3, 0))),
                                                                             new MockPythonInterpreterFactory(Guid.NewGuid(), "Test Factory 6", MockInterpreterConfiguration(new Version(3, 3))),
                                                                             new MockPythonInterpreterFactory(Guid.NewGuid(), "Hidden Factory 7", MockInterpreterConfiguration(new Version(3, 3), InterpreterUIMode.Hidden))
                                                                             ));

            using (var wpf = new WpfProxy())
                using (var list = new EnvironmentListProxy(wpf)) {
                    list.Service = mockService;
                    var environments = list.Environments;

                    Assert.AreEqual(6, environments.Count);
                    AssertUtil.ContainsExactly(
                        wpf.Invoke(() => environments.Select(ev => ev.Description).ToList()),
                        Enumerable.Range(1, 6).Select(i => string.Format("Test Factory {0}", i))
                        );
                }
        }
Ejemplo n.º 2
0
        public void ProviderLoadLog_SuccessAndFailure()
        {
            var sp  = new MockServiceProvider();
            var log = new MockActivityLog();

            sp.Services[typeof(SVsActivityLog).GUID] = log;
            var sm = new MockSettingsManager();

            sp.Services[typeof(SVsSettingsManager).GUID] = sm;

            var path1 = FactoryProviderTypeLoadErrorPath;
            var path2 = FactoryProviderSuccessPath;

            sm.Store.AddSetting(@"PythonTools\InterpreterFactories\Test1", "CodeBase", path1);
            sm.Store.AddSetting(@"PythonTools\InterpreterFactories\Test2", "CodeBase", path2);

            var service = new InterpreterOptionsService(sp);

            foreach (var msg in log.AllItems)
            {
                Console.WriteLine(msg);
            }

            AssertUtil.AreEqual(
                new Regex(@"Error//Python Tools//Failed to import factory providers.*System\.ComponentModel\.Composition\.CompositionException"),
                log.ErrorsAndWarnings.Single()
                );

            Assert.AreEqual(1, service.KnownProviders.Count());
        }
Ejemplo n.º 3
0
        public void ProviderLoadLog_FileNotFound()
        {
            var sp  = new MockServiceProvider();
            var log = new MockActivityLog();

            sp.Services[typeof(SVsActivityLog).GUID] = log;
            var sm = new MockSettingsManager();

            sp.Services[typeof(SVsSettingsManager).GUID] = sm;

            var path = Path.ChangeExtension(Path.GetTempFileName(), "dll");

            File.Delete(path);
            Assert.IsFalse(File.Exists(path));

            sm.Store.AddSetting(@"PythonTools\InterpreterFactories\Test", "CodeBase", path);

            var service = new InterpreterOptionsService(sp);

            foreach (var msg in log.AllItems)
            {
                Console.WriteLine(msg);
            }

            AssertUtil.AreEqual(
                new Regex(@"Error//Python Tools//Failed to load interpreter provider assembly.+System\.IO\.FileNotFoundException.+//" + Regex.Escape(path)),
                log.ErrorsAndWarnings.Single()
                );
        }
Ejemplo n.º 4
0
        public void ProviderLoadLog_CorruptImage()
        {
            var sp  = new MockServiceProvider();
            var log = new MockActivityLog();

            sp.Services[typeof(SVsActivityLog).GUID] = log;
            var sm = new MockSettingsManager();

            sp.Services[typeof(SVsSettingsManager).GUID] = sm;

            var path = FactoryProviderCorruptPath;

            sm.Store.AddSetting(@"PythonTools\InterpreterFactories\Test", "CodeBase", path);

            var service = new InterpreterOptionsService(sp);

            foreach (var msg in log.AllItems)
            {
                Console.WriteLine(msg);
            }

            AssertUtil.AreEqual(
                new Regex(@"Error//Python Tools//Failed to load interpreter provider assembly.+System\.BadImageFormatException.+//" + Regex.Escape(path)),
                log.ErrorsAndWarnings.Single()
                );
        }
Ejemplo n.º 5
0
        public void ProviderLoadLog_Success()
        {
            var sp  = new MockServiceProvider();
            var log = new MockActivityLog();

            sp.Services[typeof(SVsActivityLog).GUID] = log;
            var sm = new MockSettingsManager();

            sp.Services[typeof(SVsSettingsManager).GUID] = sm;

            var path = FactoryProviderSuccessPath;

            sm.Store.AddSetting(@"PythonTools\InterpreterFactories\Test", "CodeBase", path);

            var service = new InterpreterOptionsService(sp);

            foreach (var msg in log.AllItems)
            {
                Console.WriteLine(msg);
            }

            AssertUtil.AreEqual(
                new Regex(@"Information//Python Tools//Loading interpreter provider assembly.*//" + Regex.Escape(path)),
                log.AllItems.Single()
                );

            Assert.AreEqual(1, service.KnownProviders.Count());
        }