Fix selectors all, mergeall and add tests

Bug from: 981052c9c6
This commit is contained in:
pukkandan 2021-07-07 21:05:58 +05:30
parent 38a40c9e16
commit b5ac45b197
No known key found for this signature in database
GPG key ID: 0F00D95A001F4698
2 changed files with 21 additions and 28 deletions

View file

@ -35,6 +35,9 @@ class YDL(FakeYDL):
def to_screen(self, msg): def to_screen(self, msg):
self.msgs.append(msg) self.msgs.append(msg)
def dl(self, *args, **kwargs):
assert False, 'Downloader must not be invoked for test_YoutubeDL'
def _make_result(formats, **kwargs): def _make_result(formats, **kwargs):
res = { res = {
@ -117,35 +120,24 @@ class TestFormatSelection(unittest.TestCase):
] ]
info_dict = _make_result(formats) info_dict = _make_result(formats)
ydl = YDL({'format': '20/47'}) def test(inp, *expected, multi=False):
ydl.process_ie_result(info_dict.copy()) ydl = YDL({
downloaded = ydl.downloaded_info_dicts[0] 'format': inp,
self.assertEqual(downloaded['format_id'], '47') 'allow_multiple_video_streams': multi,
'allow_multiple_audio_streams': multi,
})
ydl.process_ie_result(info_dict.copy())
downloaded = map(lambda x: x['format_id'], ydl.downloaded_info_dicts)
self.assertEqual(list(downloaded), list(expected))
ydl = YDL({'format': '20/71/worst'}) test('20/47', '47')
ydl.process_ie_result(info_dict.copy()) test('20/71/worst', '35')
downloaded = ydl.downloaded_info_dicts[0] test(None, '2')
self.assertEqual(downloaded['format_id'], '35') test('webm/mp4', '47')
test('3gp/40/mp4', '35')
ydl = YDL() test('example-with-dashes', 'example-with-dashes')
ydl.process_ie_result(info_dict.copy()) test('all', '35', 'example-with-dashes', '45', '47', '2') # Order doesn't actually matter for this
downloaded = ydl.downloaded_info_dicts[0] test('mergeall', '2+47+45+example-with-dashes+35', multi=True)
self.assertEqual(downloaded['format_id'], '2')
ydl = YDL({'format': 'webm/mp4'})
ydl.process_ie_result(info_dict.copy())
downloaded = ydl.downloaded_info_dicts[0]
self.assertEqual(downloaded['format_id'], '47')
ydl = YDL({'format': '3gp/40/mp4'})
ydl.process_ie_result(info_dict.copy())
downloaded = ydl.downloaded_info_dicts[0]
self.assertEqual(downloaded['format_id'], '35')
ydl = YDL({'format': 'example-with-dashes'})
ydl.process_ie_result(info_dict.copy())
downloaded = ydl.downloaded_info_dicts[0]
self.assertEqual(downloaded['format_id'], 'example-with-dashes')
def test_format_selection_audio(self): def test_format_selection_audio(self):
formats = [ formats = [

View file

@ -1758,6 +1758,7 @@ class YoutubeDL(object):
def _check_formats(formats): def _check_formats(formats):
if not check_formats: if not check_formats:
yield from formats yield from formats
return
for f in formats: for f in formats:
self.to_screen('[info] Testing format %s' % f['format_id']) self.to_screen('[info] Testing format %s' % f['format_id'])
temp_file = tempfile.NamedTemporaryFile( temp_file = tempfile.NamedTemporaryFile(