Merge pull request #2818 from shniubobo/issue-2817

Fix plugins running twice in autoreload mode
This commit is contained in:
Justin Mayer 2020-11-02 12:40:13 +01:00 committed by GitHub
commit c345268de6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 0 deletions

View file

@ -53,6 +53,9 @@ def load_legacy_plugin(plugin, plugin_paths):
if spec is None:
raise ImportError('Cannot import plugin `{}`'.format(plugin))
else:
# Avoid loading the same plugin twice
if spec.name in sys.modules:
return sys.modules[spec.name]
# create module object from spec
mod = importlib.util.module_from_spec(spec)
# place it into sys.modules cache

View file

@ -131,6 +131,17 @@ class PluginTest(unittest.TestCase):
'normal subpackage plugin'},
get_plugin_names(plugins))
# ensure normal plugins are loaded only once
SETTINGS = {
'PLUGINS': ['normal_plugin'],
'PLUGIN_PATHS': [self._NORMAL_PLUGIN_FOLDER],
}
plugins = load_plugins(SETTINGS)
for plugin in load_plugins(SETTINGS):
# The second load_plugins() should return the same plugin
# objects as the first one
self.assertIn(plugin, plugins)
# namespace plugin short
SETTINGS = {
'PLUGINS': ['ns_plugin']