1
0
Fork 0
mirror of https://github.com/morpheus65535/bazarr synced 2025-02-28 16:45:40 +00:00
bazarr/tests/test_assrt.py
Deathbybandaid bdbf762331
no log: Pep Fixes
* Whitespace and Commenting Fixes
E203 whitespace before ':'
E225 missing whitespace around operator
E231 missing whitespace after ',' 
E251 unexpected spaces around keyword / parameter equals
E261 at least two spaces before inline comment
E262 inline comment should start with '# '
E265 block comment should start with '# '
E302 expected 2 blank lines, found X
E303 too many blank lines
E305 expected 2 blank lines after class or function definition, found X
W291 trailing whitespace
W293 blank line contains whitespace

* Import Fixes
E402 module level import not at top of file
W0401 X ' may be undefined, or defined from star imports: ' X
W0404 redefinition of unused X from line X
W0611 X imported but unused

* Variable and Exception Fixes
E701 multiple statements on one line (colon)
E711 comparison to None should be 'if cond is not None:'
E713 test for membership should be 'not in'
E722 do not use bare 'except'
E741 ambiguous variable name 'l'
W0612 local variable X is assigned to but never used

* Indentation Fixes
E111 indentation is not a multiple of four
E117 over-indented
E122 continuation line missing indentation or outdented
E125 continuation line with same indent as next logical line
E127 continuation line over-indented for visual indent
E129 visually indented line with same indent as next logical line

* replace lowercase todo and fixme with standardized TODO
2021-09-27 19:58:18 -04:00

181 lines
7.1 KiB
Python

# -*- coding: utf-8 -*-
import os
from babelfish import language_converters
from subzero.language import Language
import pytest
from vcr import VCR
from urlparse import urlparse, parse_qs
from urllib import urlencode
from subliminal_patch.providers.assrt import (
AssrtSubtitle, AssrtProvider, language_contains,
search_language_in_list, supported_languages)
def remove_auth_token(request):
parsed_uri = urlparse(request.uri)
parsed_query = parse_qs(parsed_uri.query)
if 'token' in parsed_query:
parsed_query['token'] = 'SECRET'
parsed_uri = parsed_uri._replace(query=urlencode(parsed_query))
request.uri = parsed_uri.geturl()
return request
vcr = VCR(path_transformer=lambda path: path + '.yaml',
before_record_request=remove_auth_token,
record_mode=os.environ.get('VCR_RECORD_MODE', 'once'),
match_on=['method', 'scheme', 'host', 'port', 'path', 'body'],
cassette_library_dir=os.path.realpath(os.path.join('cassettes', 'assrt')))
TOKEN = os.environ.get('ASSRT_TOKEN', 'NO_TOKEN_PROVIDED')
def test_supported_languages():
assert set(supported_languages) == set([('zho', None, None),
('eng', None, None),
('zho', None, 'Hans'),
('zho', None, 'Hant')])
def test_language_contains():
assert language_contains(Language('zho'), Language('zho'))
assert language_contains(Language('zho', 'TW', None), Language('zho'))
assert language_contains(Language('zho', 'CN', None), Language('zho'))
assert language_contains(Language('zho', None, 'Hant'), Language('zho'))
assert language_contains(Language('zho', None, 'Hans'), Language('zho'))
assert language_contains(Language('zho', 'TW', 'Hant'), Language('zho'))
assert language_contains(Language('zho', 'CN', 'Hans'), Language('zho'))
assert language_contains(Language('zho', None, 'Hant'), Language('zho', None, 'Hant'))
assert language_contains(Language('zho', None, 'Hans'), Language('zho', None, 'Hans'))
def test_search_language_in_list():
assert search_language_in_list(Language('zho', None, 'Hant'), [Language('zho', None, 'Hant')])
assert search_language_in_list(Language('zho', None, 'Hans'), [Language('zho', None, 'Hans')])
assert search_language_in_list(Language('zho', None, 'Hant'), [Language('zho')])
assert search_language_in_list(Language('zho', None, 'Hans'), [Language('zho')])
assert search_language_in_list(Language('zho', None, 'Hant'), [Language('eng'), Language('zho')])
assert not search_language_in_list(Language('zho', None, 'Hans'), [Language('zho', None, 'Hant')])
assert search_language_in_list(Language('zho', None, 'Hans'), [Language('zho', None, 'Hant'), Language('zho')])
def test_get_matches_exact_movie_name(movies):
subtitle = AssrtSubtitle(Language('zho'), 253629,
'man.of.steel.2013.720p.bluray.x264-felony.mkv',
None, None)
matches = subtitle.get_matches(movies['man_of_steel'])
assert matches == {'title', 'format', 'release_group', 'year',
'video_codec', 'resolution'}
def test_get_matches_movie_name(movies):
subtitle = AssrtSubtitle(Language('zho'), 618185,
'Man.Of.Steel.2013.BluRay.720p.x264.AC3.2Audios-CMCT',
None, None)
matches = subtitle.get_matches(movies['man_of_steel'])
assert matches == {'title', 'format', 'year', 'video_codec', 'resolution'}
@pytest.mark.converter
def test_converter_convert_alpha3():
assert language_converters['assrt'].convert('zho', None, 'Hans') == 'chi'
assert language_converters['assrt'].convert('zho', None, 'Hant') == 'zht'
assert language_converters['assrt'].convert('eng') == 'eng'
@pytest.mark.converter
def test_converter_reverse():
assert language_converters['assrt'].reverse('chi') == ('zho', None, 'Hans')
assert language_converters['assrt'].reverse('zht') == ('zho', None, 'Hant')
assert language_converters['assrt'].reverse(u'簡體') == ('zho', None, 'Hans')
assert language_converters['assrt'].reverse(u'繁體') == ('zho', None, 'Hant')
assert language_converters['assrt'].reverse(u'简体') == ('zho', None, 'Hans')
assert language_converters['assrt'].reverse(u'繁体') == ('zho', None, 'Hant')
@pytest.mark.integration
@vcr.use_cassette
def test_query_movie_zh_Hans(movies):
languages = [Language('zho', None, 'Hant')]
video = movies['man_of_steel']
with AssrtProvider(TOKEN) as provider:
subtitles = provider.query(languages, video)
assert len(subtitles) == 8
@pytest.mark.integration
@vcr.use_cassette
def test_query_movie_zh_Hant(movies):
languages = [Language('zho', None, 'Hans')]
video = movies['man_of_steel']
with AssrtProvider(TOKEN) as provider:
subtitles = provider.query(languages, video)
assert len(subtitles) == 8
@pytest.mark.integration
@vcr.use_cassette
def test_query_movie_zh(movies):
languages = [Language('zho')]
video = movies['man_of_steel']
with AssrtProvider(TOKEN) as provider:
subtitles = provider.query(languages, video)
assert len(subtitles) == 16
@pytest.mark.integration
@vcr.use_cassette
def test_query_episode(episodes):
video = episodes['bbt_s07e05']
languages = [Language('zho', None, 'Hant'), Language('zho', None, 'Hans')]
with AssrtProvider(TOKEN) as provider:
subtitles = provider.query(languages, video)
assert len(subtitles) == 11
@pytest.mark.integration
@vcr.use_cassette
def test_query_list_subtitles(movies):
languages = [Language('zho', None, 'Hant'), Language('zho', None, 'Hans')]
video = movies['man_of_steel']
with AssrtProvider(TOKEN) as provider:
subtitles = provider.list_subtitles(video, languages)
assert len(subtitles) == 16
@pytest.mark.integration
@vcr.use_cassette
def test_download_subtitle(movies):
languages = [Language('zho', None, 'Hant')]
video = movies['man_of_steel']
with AssrtProvider(TOKEN) as provider:
subtitles = provider.list_subtitles(video, languages)
provider.download_subtitle(subtitles[0])
assert subtitles[0].content is not None
assert subtitles[0].language == Language('zho', None, 'Hant')
@pytest.mark.integration
@vcr.use_cassette
def test_download_subtitle_zh(movies):
languages = [Language('zho')]
video = movies['man_of_steel']
with AssrtProvider(TOKEN) as provider:
subtitles = provider.list_subtitles(video, languages)
provider.download_subtitle(subtitles[0])
assert subtitles[0].content is not None
assert subtitles[0].language == Language('zho')
@pytest.mark.integration
@vcr.use_cassette
def test_download_episode_subtitle(episodes):
languages = [Language('zho', None, 'Hant'), Language('zho', None, 'Hans')]
video = episodes['bbt_s07e05']
with AssrtProvider(TOKEN) as provider:
subtitles = provider.list_subtitles(video, languages)
provider.download_subtitle(subtitles[0])
assert subtitles[0].content is not None
assert subtitles[0].language == Language('zho', None, 'Hans')