Exemple #1
0
    def handle(self, *args, **options):
        """
        """
        PlManager = PluginManager()
        if options['param_dir']:
            PlManager.locator = FileLocator()
            PlManager.locator.directories_list = [options['param_dir']]
        else:
            return
        result = PlManager.find_plugins()

        print '\nWe could find candidates:'
        if not result:
            return
        for id, pl in enumerate(result):
            print '\t(%d) %s ' % (id, pl.get_name())
    def handle(self, *args, **options):
        """
        """
        PlManager = PluginManager()
        result = PlManager.find_plugins()
        print '\nCandidates for install:'
        if not result:
            return
        for id, pl in enumerate(result):
            print '\t(%d) %s ' % (id, pl.get_name())
        answer = raw_input('type id plugin for install, or "n" for cancel:')
        try:
            id = int(answer)
            pl = result[id]
        except (ValueError, IndexError):
            return

        installed = PlManager.install_plugin(pl)
        print 'Installed:'
        for id, pl in enumerate(installed):
            print '\t(%d) %s ' % (id, pl.get_name())
Exemple #3
0
class PluginManagerTest(unittest.TestCase):
    """
    Тестируем работу класса PluginManager
    """
    def setUp(self):
        """
        """
        self.simplePluginManager = PluginManager()


    def config_manager(self):
        self.locator = SimpleLocator()
        self.simplePluginManager.locator = self.locator
        self.validator = SimpleValidator()
        self.simplePluginManager.validator = self.validator
        self.storage = SimpleStorage()
        self.simplePluginManager.storage = self.storage
        self.installer = TestInstaller()
        self.simplePluginManager.installer = self.installer

    def get_plugins(self):
        self.config_manager()
        self.bad_plugin = SimplePlugin()
        self.bad_plugin.version = '1.0'
        result = self.simplePluginManager.find_plugins()
        self.good_plugin = result[0]
        self.good_plugin.version = '2.0'


    def test_empty_run(self):
        """
        Тестируем функции настройки менеджера плагинов
        @return:
        """
        self.config_manager()
        # Проверяем что поместили ссылку на локатор
        self.assertEqual(self.simplePluginManager.locator, self.locator)
        self.assertEqual(self.simplePluginManager.validator, self.validator)
        self.assertEqual(self.simplePluginManager.storage, self.storage)
        self.assertEqual(self.simplePluginManager.installer, self.installer)

    def test_find_plugins(self):
        """
        Тестируем функцию поиска плагинов
        @return:
        """
        self.config_manager()
        # Получили список доступных к установке плагинов
        result = self.simplePluginManager.find_plugins()
        self.assertEqual(len(result), self.locator.len_list)

    def test_install_plugin(self):
        """
        Тестируем работу функции установки
        @return:
        """
        self.get_plugins()

        # Нельзя установить невалидный плагин
        self.assertRaises(MPException, self.simplePluginManager.install_plugin,
                          self.bad_plugin)
        # Нельзя установить уже установленный плагин
        self.simplePluginManager.install_plugin(self.good_plugin)
        self.assertRaises(MPException, self.simplePluginManager.install_plugin,
                          self.good_plugin)

    def test_activate_plugin(self):
        """
        Тестируем работу метода активации
        @return:
        """
        self.get_plugins()
        # Нельзя активировать неустанвленный плагин
        self.assertRaises(MPException, self.simplePluginManager.activate_plugin,
                          self.good_plugin)
        # Нельзя активировать уже активированный плагин
        self.assertRaises(MPException, self.simplePluginManager.activate_plugin,
                          self.good_plugin)

    def test_uninstalled_plugin(self):
        """
        Тестируем работу деинсталяции
        @return:
        """
        self.get_plugins()
        # Нельзя удалить неустановленный плагин
        self.assertRaises(MPException,
                          self.simplePluginManager.uninstall_plugin,
                          self.good_plugin)
        # Нельзя удалить включенный плагин, надо сперва его выключить
        self.simplePluginManager.install_plugin(self.good_plugin)
        self.simplePluginManager.activate_plugin(self.good_plugin)
        self.assertRaises(MPException, self.simplePluginManager.uninstall_plugin,
                          self.good_plugin)

    def test_deactivate_plugin(self):
        """
        Тестируем работу метода активации
        @return:
        """
        self.get_plugins()
        self.simplePluginManager.install_plugin(self.good_plugin)
        # Нельзя выключить неактивированный плагин
        self.assertRaises(MPException,
                          self.simplePluginManager.deactivate_plugin,
                          self.good_plugin)