示例#1
0
文件: run.py 项目: rtm-python/choicer
def run_identica():
    """
	Run PluginManager to communicate with application identica bot.
	"""
    logging.basicConfig(format=CONFIG.get('logging'), level='INFO')
    PluginManager('identica',
                  domain_url='http://192.168.44.150:5000').execute('run')
示例#2
0
文件: run.py 项目: rtm-python/choicer
def run_admin():
    """
	Run PluginManager to administrate application.
	"""
    logging.basicConfig(format=CONFIG.get('logging'), level='INFO')
    source_path = os.path.dirname(__file__)
    PluginManager('admin', source_path=source_path).execute('configure')
示例#3
0
    def test_load_nonexistent_plugin_fails(self):
        name = 'nonexistent'
        plugins = [name]

        manager = PluginManager(Mock())
        failed_plugins = manager.load(plugins)
        assert failed_plugins == plugins
        assert manager.plugins == {}
示例#4
0
    def test_unload_plugins_never_loaded_plugin_fails(self):
        name = 'test_never_loaded_plugin'
        plugins = [name]

        manager = PluginManager(Mock())
        failed_plugins = manager.unload(plugins)

        assert failed_plugins == plugins
        assert manager.plugins == {}
示例#5
0
    def test_01_Singleton(self):
        """ 1. Checking whether PluginManger class is singleton. """
        self.pluginmanager.test_arg = 1
        secondPluginManager = PluginManager()

        self.assertEqual(id(secondPluginManager), id(self.pluginmanager),
                         'Different IDs in references to PluginManager objects (not a singleton)')
        self.assertEqual(secondPluginManager.test_arg, 1,
                         'References point to different PluginManager objects (not a singleton')
示例#6
0
    def test_load_setup_too_many_arguments_fails(self):
        name = 'setup_too_many_arguments'
        plugins = [name]

        manager = PluginManager(Mock(),
                                _plugin_module_import_prefix='fake_plugins')

        failed_plugins = manager.load(plugins)
        assert failed_plugins == plugins
        assert manager.plugins.keys() == []
示例#7
0
    def test_load_bad_callback_fails(self, mock):
        name = 'valid'
        plugins = [name]

        manager = PluginManager(Mock(),
                                _plugin_module_import_prefix='fake_plugins')
        mock.side_effect = Exception()

        failed_plugins = manager.load(plugins)

        assert failed_plugins == plugins
        assert manager.plugins == {}
示例#8
0
    def test_load_ambiguous_config_fails(self, mock):
        name = 'valid'
        plugins = [name]

        manager = PluginManager(Mock(),
                                _plugin_module_import_prefix='fake_plugins')
        mock.side_effect = AmbiguousConfigError()

        failed_plugins = manager.load(plugins)

        mock.assert_called_with(name)
        assert failed_plugins == plugins
        assert manager.plugins == {}
示例#9
0
    def test_unload_clean_close_succeeds(self):
        name = 'clean_close'
        plugins = [name]

        manager = PluginManager(Mock(),
                                _plugin_module_import_prefix='fake_plugins')

        failed_plugins = manager.load(plugins)
        assert failed_plugins == []
        assert manager.plugins.keys() == plugins

        failed_plugins = manager.unload(plugins)

        assert failed_plugins == []
        assert manager.plugins.keys() == []
示例#10
0
 def __init__(self, pcfg, clientsock, dsthost, dstport):
     """Open connection to dsthost:dstport, and return client and server proxies."""
     logger.info("creating proxy from client to %s:%d" % (dsthost, dstport))
     self.srv_proxy = None
     try:
         serversock = socket.create_connection((dsthost, dstport))
         self.cli_proxy = MinecraftProxy(clientsock)
     except Exception as e:
         clientsock.close()
         logger.error("Couldn't connect to %s:%d - %s", dsthost, dstport,
                      str(e))
         logger.info(traceback.format_exc())
         return
     self.srv_proxy = MinecraftProxy(serversock, self.cli_proxy)
     self.plugin_mgr = PluginManager(pcfg, self.cli_proxy, self.srv_proxy)
     self.cli_proxy.plugin_mgr = self.plugin_mgr
     self.srv_proxy.plugin_mgr = self.plugin_mgr
示例#11
0
文件: proxy.py 项目: meta1203/mc3p
 def handle(self, cli_sock, addr):
     logger.info('Incoming connection from %s' % repr(addr))
     try:
         srv_sock = create_connection((self.target_host, self.target_port))
         cli_proxy = MinecraftProxy(cli_sock)
     except Exception as e:
         cli_sock.close()
         logger.error("Couldn't connect to %s:%d - %s", self.target_host,
                      self.target_port, str(e))
         logger.info(traceback.format_exc())
         return
     srv_proxy = MinecraftProxy(srv_sock, cli_proxy)
     plugin_mgr = PluginManager(pcfg, cli_proxy, srv_proxy)
     cli_proxy.plugin_mgr = plugin_mgr
     srv_proxy.plugin_mgr = plugin_mgr
     cli_proxy.start()
     srv_proxy.start()
示例#12
0
    def test_unload_unregister_plugin_callbacks_error_succeeds(self, mock):
        name = 'clean_close'
        plugins = [name]

        manager = PluginManager(Mock(),
                                _plugin_module_import_prefix='fake_plugins')

        failed_plugins = manager.load(plugins)
        assert failed_plugins == []
        assert manager.plugins.keys() == plugins

        mock.side_effect = Exception()
        failed_plugins = manager.unload(plugins)

        assert failed_plugins == []
        assert manager.plugins.keys() == []

        mock.assert_called_with(name)
示例#13
0
    def test_reload_unclean_close_succeeds(self):
        name = 'unclean_close'
        plugins = [name]

        cardinal = Mock(CardinalBot)
        cardinal.reloads = 0

        manager = PluginManager(cardinal,
                                _plugin_module_import_prefix='fake_plugins')

        failed_plugins = manager.load(plugins)
        assert failed_plugins == []
        assert manager.plugins.keys() == plugins

        failed_plugins = manager.load(plugins)
        assert failed_plugins == []
        assert manager.plugins.keys() == plugins

        assert cardinal.reloads == 1
示例#14
0
    def test_load_valid_list(self):
        name = 'valid'
        plugins = [name]

        manager = PluginManager(Mock(),
                                _plugin_module_import_prefix='fake_plugins')

        failed_plugins = manager.load(plugins)
        assert failed_plugins == []
        assert manager.plugins.keys() == plugins

        assert manager.plugins[name]['name'] == name
        assert inspect.ismodule(manager.plugins[name]['module'])
        assert isinstance(manager.plugins[name]['instance'],
                          manager.plugins[name]['module'].TestValidPlugin)
        assert manager.plugins[name]['commands'] == []
        assert manager.plugins[name]['callbacks'] == []
        assert manager.plugins[name]['callback_ids'] == {}
        assert manager.plugins[name]['config'] is None
        assert manager.plugins[name]['blacklist'] == []
示例#15
0
文件: nparse.py 项目: cfurgang/nparse
    def __init__(self, *args):
        super().__init__(*args)

        # Plugin support
        self.plugins = PluginManager(self)
        self.plugins.discover_plugins(enable_all=config.data['general']['enable_plugins'])
        # End plugin support

        # Updates
        self._toggled = False
        self._log_reader = None

        # Load Parsers
        self._load_parsers()
        self._settings = SettingsWindow()

        # Tray Icon
        self._system_tray = QSystemTrayIcon()
        self._system_tray.setIcon(QIcon(resource_path('data/ui/icon.png')))
        self._system_tray.setToolTip("nParse")
        # self._system_tray.setContextMenu(self._create_menu())
        self._system_tray.activated.connect(self._menu)
        self._system_tray.show()

        # Turn On
        self._toggle()

        if self.new_version_available():
            self._system_tray.showMessage(
                "nParse Update".format(ONLINE_VERSION),
                "New version available!\ncurrent: {}\nonline: {}".format(
                    CURRENT_VERSION,
                    ONLINE_VERSION
                ),
                msecs=3000
            )

        self.plugins.hook(Plugin.on_app_start, self)
示例#16
0
 def test_constructor_plugins_not_a_list_typeerror(self, plugins):
     with pytest.raises(TypeError):
         PluginManager(Mock(), plugins)
示例#17
0
 def setUp(self):
     self.pluginmanager = PluginManager()
示例#18
0
import sys, os, plat, config
from PyQt5.QtGui import QKeySequence
from PyQt5.QtWidgets import QApplication
from plugins import PluginManager
from host import Host

if plat.Supports.hotkeys: import hotkeys

# For easier usage calculate the path relative to here.
here = os.path.abspath(os.path.dirname(__file__))

app = QApplication(sys.argv)
app.setQuitOnLastWindowClosed(False)

# Add kill-switch for development testing
if DEBUG and plat.Supports.hotkeys:
	hotkeys.default.registerCommand('kill', app.exit)
	hotkeys.default._bind('ctrl+shift+k', 'kill')
#endif

plugHost = Host()

pm = PluginManager(plugHost)
pm.load(os.path.join(here, 'plugins'))

hotkeys.default.load()

app.exec_()
config.default.save()
示例#19
0
文件: run.py 项目: rtm-python/choicer
def run_choicer():
    """
	Run PluginManager to communicate with application choicer bot.
	"""
    logging.basicConfig(format=CONFIG.get('logging'), level='INFO')
    PluginManager('choicer').execute('run')
示例#20
0
    myComm.__name__ = name
    return myComm


# 1
from discord.ext import commands
log = logging.getLogger("Rotating Log")

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
passwd = os.getenv('passwd')
dbname = os.getenv('dbname')
username = os.getenv('username')
prefix = os.getenv('prefix')
dbconn = DataBase(dbname, username, passwd)
pg = PluginManager(log, dbconn, prefix)
commander = pg.get_plugins()
# 2
bot = commands.Bot(command_prefix='!')
for (kw, comm) in commander.items():

    botcomms = bindfunction(kw, comm)
    myhelp = getattr(comm, "myhelp", "No help provided")
    bot.add_command(commands.Command(botcomms, name=kw, help=myhelp))


@bot.event
async def on_ready():
    #print(f'{bot.user.name} has connected to Discord!')
    pass
示例#21
0
 def test_constructor_no_plugins(self):
     manager = PluginManager(Mock())
     assert len(manager.plugins) == 0
示例#22
0
 def test_load_plugins_not_a_list_or_string_typeerror(self, plugins):
     manager = PluginManager(Mock())
     with pytest.raises(TypeError):
         manager.load(plugins)
示例#23
0
 def test_constructor_no_plugins_empty_list(self):
     manager = PluginManager(Mock(), [])
     assert len(manager.plugins) == 0
示例#24
0
 def test_constructor_loads_plugins(self, mock):
     plugins = ['foo', 'bar']
     PluginManager(Mock(), plugins)
     mock.assert_called_with(plugins)
示例#25
0
 def discover_plugins(self):
     self.plugin_manager = PluginManager()
     self.plugin_manager.discover_plugins(
         os.path.join(self.root_path, "plugins"))
示例#26
0
	def setUp(self):
		self.manager = PluginManager()
		self.manager.add_plugin_dir("/tmp/slog/share/slog/plugins")