diff --git a/test/test_plugins.py b/test/test_plugins.py index 9b77659e6..6499ed615 100644 --- a/test/test_plugins.py +++ b/test/test_plugins.py @@ -17,10 +17,7 @@ load_plugins, load_all_plugins, register_plugin_spec, - set_plugin_dirs, disable_plugins, - add_plugin_dirs, - get_plugin_spec, ) from yt_dlp.globals import ( @@ -31,7 +28,6 @@ plugin_pps, all_plugins_loaded, plugin_specs, - plugins_enabled, ) from yt_dlp.utils import YoutubeDLError @@ -58,7 +54,6 @@ def reset_plugins(): plugin_dirs.value = ['default'] plugin_specs.value = {} all_plugins_loaded.value = False - plugins_enabled.value = True # Clearing override plugins is probably difficult for module_name in tuple(sys.modules): for plugin_type in ('extractor', 'postprocessor'): @@ -205,28 +200,35 @@ def test_load_all_plugin_types(self): self.assertIn(f'{PACKAGE_NAME}.extractor.normal', sys.modules.keys()) self.assertIn(f'{PACKAGE_NAME}.postprocessor.normal', sys.modules.keys()) + def test_no_plugin_dirs(self): + register_plugin_spec(EXTRACTOR_PLUGIN_SPEC) + register_plugin_spec(POSTPROCESSOR_PLUGIN_SPEC) + + plugin_dirs.value = [] + load_all_plugins() + + self.assertNotIn(f'{PACKAGE_NAME}.extractor.normal', sys.modules.keys()) + self.assertNotIn(f'{PACKAGE_NAME}.postprocessor.normal', sys.modules.keys()) + def test_set_plugin_dirs(self): - custom_plugin_dir = str(TEST_DATA_DIR / 'plugin_packages') - set_plugin_dirs(custom_plugin_dir) + plugin_dirs.value = [custom_plugin_dir] - self.assertEqual(plugin_dirs.value, [custom_plugin_dir]) - self.assertNotIn('default', plugin_dirs.value) load_plugins(EXTRACTOR_PLUGIN_SPEC) self.assertIn(f'{PACKAGE_NAME}.extractor.package', sys.modules.keys()) self.assertIn('PackagePluginIE', plugin_ies.value) def test_invalid_plugin_dir(self): - set_plugin_dirs('invalid_dir') + plugin_dirs.value = ['invalid_dir'] with self.assertRaises(ValueError): load_plugins(EXTRACTOR_PLUGIN_SPEC) - def test_add_plugin_dirs(self): + def test_append_plugin_dirs(self): custom_plugin_dir = str(TEST_DATA_DIR / 'plugin_packages') self.assertEqual(plugin_dirs.value, ['default']) - add_plugin_dirs(custom_plugin_dir) + plugin_dirs.value.append(custom_plugin_dir) self.assertEqual(plugin_dirs.value, ['default', custom_plugin_dir]) load_plugins(EXTRACTOR_PLUGIN_SPEC) @@ -254,8 +256,6 @@ def test_disable_plugins_already_loaded(self): with self.assertRaises(YoutubeDLError): disable_plugins() - self.assertTrue(plugins_enabled.value) - ies = load_plugins(EXTRACTOR_PLUGIN_SPEC) self.assertIn('NormalPluginIE', ies) @@ -263,9 +263,9 @@ def test_get_plugin_spec(self): register_plugin_spec(EXTRACTOR_PLUGIN_SPEC) register_plugin_spec(POSTPROCESSOR_PLUGIN_SPEC) - self.assertEqual(get_plugin_spec('extractor'), EXTRACTOR_PLUGIN_SPEC) - self.assertEqual(get_plugin_spec('postprocessor'), POSTPROCESSOR_PLUGIN_SPEC) - self.assertIsNone(get_plugin_spec('invalid')) + self.assertEqual(plugin_specs.value.get('extractor'), EXTRACTOR_PLUGIN_SPEC) + self.assertEqual(plugin_specs.value.get('postprocessor'), POSTPROCESSOR_PLUGIN_SPEC) + self.assertIsNone(plugin_specs.value.get('invalid')) if __name__ == '__main__': diff --git a/yt_dlp/plugins.py b/yt_dlp/plugins.py index cf4bd27de..013d71721 100644 --- a/yt_dlp/plugins.py +++ b/yt_dlp/plugins.py @@ -104,11 +104,7 @@ def _get_package_paths(*root_paths, containing_folder): containing_folder='yt-dlp-plugins', ) - yield from internal_plugin_paths() - - -def internal_plugin_paths(): - # Always try load from PYTHONPATH folders + # Always try load from PYTHONPATH directories yield from (path for path in map(Path, sys.path) if path != _BASE_PACKAGE_PATH) @@ -136,7 +132,6 @@ def __init__(self, *packages): ) def search_locations(self, fullname): - candidate_locations = itertools.chain.from_iterable( default_plugin_paths() if candidate == 'default' else candidate_plugin_paths(candidate) for candidate in plugin_dirs.value