mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-03-09 12:50:23 -05:00
Get tests working
This commit is contained in:
parent
93aa21b3b2
commit
74050a8dff
2 changed files with 18 additions and 23 deletions
|
@ -17,10 +17,7 @@
|
||||||
load_plugins,
|
load_plugins,
|
||||||
load_all_plugins,
|
load_all_plugins,
|
||||||
register_plugin_spec,
|
register_plugin_spec,
|
||||||
set_plugin_dirs,
|
|
||||||
disable_plugins,
|
disable_plugins,
|
||||||
add_plugin_dirs,
|
|
||||||
get_plugin_spec,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
from yt_dlp.globals import (
|
from yt_dlp.globals import (
|
||||||
|
@ -31,7 +28,6 @@
|
||||||
plugin_pps,
|
plugin_pps,
|
||||||
all_plugins_loaded,
|
all_plugins_loaded,
|
||||||
plugin_specs,
|
plugin_specs,
|
||||||
plugins_enabled,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
from yt_dlp.utils import YoutubeDLError
|
from yt_dlp.utils import YoutubeDLError
|
||||||
|
@ -58,7 +54,6 @@ def reset_plugins():
|
||||||
plugin_dirs.value = ['default']
|
plugin_dirs.value = ['default']
|
||||||
plugin_specs.value = {}
|
plugin_specs.value = {}
|
||||||
all_plugins_loaded.value = False
|
all_plugins_loaded.value = False
|
||||||
plugins_enabled.value = True
|
|
||||||
# Clearing override plugins is probably difficult
|
# Clearing override plugins is probably difficult
|
||||||
for module_name in tuple(sys.modules):
|
for module_name in tuple(sys.modules):
|
||||||
for plugin_type in ('extractor', 'postprocessor'):
|
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}.extractor.normal', sys.modules.keys())
|
||||||
self.assertIn(f'{PACKAGE_NAME}.postprocessor.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):
|
def test_set_plugin_dirs(self):
|
||||||
|
|
||||||
custom_plugin_dir = str(TEST_DATA_DIR / 'plugin_packages')
|
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)
|
load_plugins(EXTRACTOR_PLUGIN_SPEC)
|
||||||
|
|
||||||
self.assertIn(f'{PACKAGE_NAME}.extractor.package', sys.modules.keys())
|
self.assertIn(f'{PACKAGE_NAME}.extractor.package', sys.modules.keys())
|
||||||
self.assertIn('PackagePluginIE', plugin_ies.value)
|
self.assertIn('PackagePluginIE', plugin_ies.value)
|
||||||
|
|
||||||
def test_invalid_plugin_dir(self):
|
def test_invalid_plugin_dir(self):
|
||||||
set_plugin_dirs('invalid_dir')
|
plugin_dirs.value = ['invalid_dir']
|
||||||
with self.assertRaises(ValueError):
|
with self.assertRaises(ValueError):
|
||||||
load_plugins(EXTRACTOR_PLUGIN_SPEC)
|
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')
|
custom_plugin_dir = str(TEST_DATA_DIR / 'plugin_packages')
|
||||||
|
|
||||||
self.assertEqual(plugin_dirs.value, ['default'])
|
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])
|
self.assertEqual(plugin_dirs.value, ['default', custom_plugin_dir])
|
||||||
|
|
||||||
load_plugins(EXTRACTOR_PLUGIN_SPEC)
|
load_plugins(EXTRACTOR_PLUGIN_SPEC)
|
||||||
|
@ -254,8 +256,6 @@ def test_disable_plugins_already_loaded(self):
|
||||||
with self.assertRaises(YoutubeDLError):
|
with self.assertRaises(YoutubeDLError):
|
||||||
disable_plugins()
|
disable_plugins()
|
||||||
|
|
||||||
self.assertTrue(plugins_enabled.value)
|
|
||||||
|
|
||||||
ies = load_plugins(EXTRACTOR_PLUGIN_SPEC)
|
ies = load_plugins(EXTRACTOR_PLUGIN_SPEC)
|
||||||
self.assertIn('NormalPluginIE', ies)
|
self.assertIn('NormalPluginIE', ies)
|
||||||
|
|
||||||
|
@ -263,9 +263,9 @@ def test_get_plugin_spec(self):
|
||||||
register_plugin_spec(EXTRACTOR_PLUGIN_SPEC)
|
register_plugin_spec(EXTRACTOR_PLUGIN_SPEC)
|
||||||
register_plugin_spec(POSTPROCESSOR_PLUGIN_SPEC)
|
register_plugin_spec(POSTPROCESSOR_PLUGIN_SPEC)
|
||||||
|
|
||||||
self.assertEqual(get_plugin_spec('extractor'), EXTRACTOR_PLUGIN_SPEC)
|
self.assertEqual(plugin_specs.value.get('extractor'), EXTRACTOR_PLUGIN_SPEC)
|
||||||
self.assertEqual(get_plugin_spec('postprocessor'), POSTPROCESSOR_PLUGIN_SPEC)
|
self.assertEqual(plugin_specs.value.get('postprocessor'), POSTPROCESSOR_PLUGIN_SPEC)
|
||||||
self.assertIsNone(get_plugin_spec('invalid'))
|
self.assertIsNone(plugin_specs.value.get('invalid'))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -104,11 +104,7 @@ def _get_package_paths(*root_paths, containing_folder):
|
||||||
containing_folder='yt-dlp-plugins',
|
containing_folder='yt-dlp-plugins',
|
||||||
)
|
)
|
||||||
|
|
||||||
yield from internal_plugin_paths()
|
# Always try load from PYTHONPATH directories
|
||||||
|
|
||||||
|
|
||||||
def internal_plugin_paths():
|
|
||||||
# Always try load from PYTHONPATH folders
|
|
||||||
yield from (path for path in map(Path, sys.path) if path != _BASE_PACKAGE_PATH)
|
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):
|
def search_locations(self, fullname):
|
||||||
|
|
||||||
candidate_locations = itertools.chain.from_iterable(
|
candidate_locations = itertools.chain.from_iterable(
|
||||||
default_plugin_paths() if candidate == 'default' else candidate_plugin_paths(candidate)
|
default_plugin_paths() if candidate == 'default' else candidate_plugin_paths(candidate)
|
||||||
for candidate in plugin_dirs.value
|
for candidate in plugin_dirs.value
|
||||||
|
|
Loading…
Reference in a new issue