Beispiel #1
0
class TestLoadingPlugins(tests.TestCase):
    def setUp(self):
        path = self.get_tmp_name()
        self.nb = tests.new_notebook(fakedir=path)
        with FilterFailedToLoadPlugin():
            self.ui = NotebookInterface(self.nb)
        self.plugin_conf = self.ui.preferences["General"]["plugins"]

    def tearDown(self):
        configfile = self.ui.preferences.file
        configfile.file.remove()

    def testLoadPlugin(self):
        self.assertNotIn("automount", self.plugin_conf)
        plugins = self.plugin_conf[:]
        obj = self.ui.load_plugin("automount")
        self.assertEqual(obj.plugin_key, "automount")
        self.assertIn(obj, self.ui.plugins)
        self.assertTrue(self.plugin_conf, plugins + ["automount"])

        self.assertEqual(obj, self.ui.get_plugin("automount"))

    def testLoadFailingPlugin(self):
        names = self.plugin_conf[:]
        objs = self.ui.plugins[:]
        with FailingPluginFilter():
            self.assertIsNone(self.ui.load_plugin("nonexistingplugin"))
        self.assertEqual(self.plugin_conf, names)
        self.assertEqual(self.ui.plugins, objs)

        self.assertIsNone(self.ui.get_plugin("nonexistingplugin"))

    def testInitPlugin(self):
        self.plugin_conf.append("automount")
        names = self.plugin_conf[:]

        self.ui.preferences.write()

        with FilterFailedToLoadPlugin():
            myui = NotebookInterface()
            # no notebook yet - only independent plugins are loaded
        self.assertEqual(len(myui.plugins), 1)
        self.assertEqual(myui.plugins[0].plugin_key, "automount")

        myui.open_notebook(self.nb)
        # now the rest is loaded as well
        self.assertEqual(len(myui.plugins), len(names))

    def testInitFailingPlugin(self):
        names = self.plugin_conf[:]
        objs = self.ui.plugins[:]
        self.plugin_conf.append("nonexistingplugin")
        self.ui.preferences.set_modified(False)
        self.assertFalse(self.ui.preferences.modified)
        with FailingPluginFilter():
            self.ui.load_plugins()
        self.assertEqual(self.plugin_conf, names)
        self.assertEqual(self.ui.plugins, objs)
        self.assertTrue(self.ui.preferences.modified)

    def testUnloadPlugin(self):
        plugin = self.ui.plugins[0]
        self.assertIn(plugin, self.ui.plugins)
        self.assertIn(plugin.plugin_key, self.plugin_conf)
        self.ui.unload_plugin(plugin)
        self.assertNotIn(plugin, self.ui.plugins)
        self.assertNotIn(plugin.plugin_key, self.plugin_conf)

    def testUnloadPluginByName(self):
        plugin = self.ui.plugins[0]
        self.assertIn(plugin, self.ui.plugins)
        self.assertIn(plugin.plugin_key, self.plugin_conf)
        self.ui.unload_plugin(plugin.plugin_key)
        self.assertNotIn(plugin, self.ui.plugins)
        self.assertNotIn(plugin.plugin_key, self.plugin_conf)