File: test_extensions.py

package info (click to toggle)
subliminal 2.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 14,972 kB
  • sloc: python: 10,243; makefile: 166
file content (80 lines) | stat: -rw-r--r-- 3,074 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from sys import version_info

if version_info >= (3, 10):
    # 'group' keyword argument was introduced in 3.10
    from importlib.metadata import entry_points
else:
    from importlib_metadata import entry_points  # type: ignore[assignment,no-redef,import-not-found]

from subliminal.extensions import (
    RegistrableExtensionManager,
    default_providers,
    disabled_providers,
    parse_entry_point,
    provider_manager,
)


def test_registrable_extension_manager_all_extensions():
    native_extensions = sorted(e.name for e in provider_manager)

    manager = RegistrableExtensionManager(
        'subliminal.providers', ['esopensubtitl = subliminal.providers.opensubtitles:OpenSubtitlesProvider']
    )
    extensions = sorted(e.name for e in manager)
    assert len(extensions) == len(native_extensions) + 1
    assert extensions == sorted(name for name in ('esopensubtitl', *native_extensions))


def test_registrable_extension_manager_internal_extension():
    manager = RegistrableExtensionManager(
        'subliminal.test_providers',
        [
            'addic7ed = subliminal.providers.addic7ed:Addic7edProvider',
            'opensubtitles = subliminal.providers.opensubtitles:OpenSubtitlesProvider',
            'podnapisi = subliminal.providers.podnapisi:PodnapisiProvider',
            'tvsubtitles = subliminal.providers.tvsubtitles:TVsubtitlesProvider',
        ],
    )
    assert len(list(manager)) == 4
    assert len(manager.internal_extensions) == 4


def test_registrable_extension_manager_register():
    manager = RegistrableExtensionManager(
        'subliminal.test_providers',
        [
            'addic7ed = subliminal.providers.addic7ed:Addic7edProvider',
            'opensubtitles = subliminal.providers.opensubtitles:OpenSubtitlesProvider',
        ],
    )
    assert len(list(manager)) == 2
    manager.register('de7cidda = subliminal.providers.addic7ed:Addic7edProvider')
    assert len(list(manager)) == 3
    assert 'de7cidda' in manager.names()


def test_registrable_extension_manager_unregister():
    manager = RegistrableExtensionManager(
        'subliminal.test_providers',
        [
            'gestdown = subliminal.providers.gestdown:GestdownProvider',
            'tvsubtitles = subliminal.providers.tvsubtitles:TVsubtitlesProvider',
        ],
    )
    assert len(list(manager)) == 2
    manager.register('de7cidda = subliminal.providers.addic7ed:Addic7edProvider')
    manager.unregister('de7cidda = subliminal.providers.addic7ed:Addic7edProvider')
    assert len(list(manager)) == 2
    assert set(manager.names()) == {'gestdown', 'tvsubtitles'}


def test_provider_manager():
    setup_names = {ep.name for ep in entry_points(group=provider_manager.namespace)}
    internal_names = {
        parse_entry_point(iep, provider_manager.namespace).name for iep in provider_manager.internal_extensions
    }
    enabled_names = set(default_providers)
    disabled_names = set(disabled_providers)
    assert enabled_names == setup_names - disabled_names
    assert internal_names == enabled_names | disabled_names