import json
import os.path
import re
-import types
import ssl
import sys
+import types
import unittest
import youtube_dl.extractor
op, _, expected_num = expected.partition(':')
expected_num = int(expected_num)
if op == 'mincount':
- assert_func = assertGreaterEqual
+ assert_func = self.assertGreaterEqual
msg_tmpl = 'Expected %d items in field %s, but only got %d'
elif op == 'maxcount':
- assert_func = assertLessEqual
+ assert_func = self.assertLessEqual
msg_tmpl = 'Expected maximum %d items in field %s, but got %d'
elif op == 'count':
- assert_func = assertEqual
+ assert_func = self.assertEqual
msg_tmpl = 'Expected exactly %d items in field %s, but got %d'
else:
assert False
assert_func(
- self, len(got), expected_num,
+ len(got), expected_num,
msg_tmpl % (expected_num, field, len(got)))
return
self.assertEqual(
self.assertTrue(m, msg)
-def assertGreaterEqual(self, got, expected, msg=None):
- if not (got >= expected):
- if msg is None:
- msg = '%r not greater than or equal to %r' % (got, expected)
- self.assertTrue(got >= expected, msg)
-
-
-def assertLessEqual(self, got, expected, msg=None):
- if not (got <= expected):
- if msg is None:
- msg = '%r not less than or equal to %r' % (got, expected)
- self.assertTrue(got <= expected, msg)
-
-
-def assertEqual(self, got, expected, msg=None):
- if not (got == expected):
- if msg is None:
- msg = '%r not equal to %r' % (got, expected)
- self.assertTrue(got == expected, msg)
-
-
def expect_warnings(ydl, warnings_re):
real_warning = ydl.report_warning
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from test.helper import (
- assertGreaterEqual,
- assertLessEqual,
expect_warnings,
get_params,
gettestcases,
ExtractorError,
error_to_compat_str,
format_bytes,
+ IDENTITY,
+ preferredencoding,
UnavailableVideoError,
)
from youtube_dl.extractor import get_info_extractor
RETRIES = 3
+# Some unittest APIs require actual str
+if not isinstance('TEST', str):
+ _encode_str = lambda s: s.encode(preferredencoding())
+else:
+ _encode_str = IDENTITY
+
class YoutubeDL(youtube_dl.YoutubeDL):
def __init__(self, *args, **kwargs):
def print_skipping(reason):
print('Skipping %s: %s' % (test_case['name'], reason))
- self.skipTest(reason)
+ self.skipTest(_encode_str(reason))
if not ie.working():
print_skipping('IE marked as not _WORKING')
expect_info_dict(self, res_dict, test_case.get('info_dict', {}))
if 'playlist_mincount' in test_case:
- assertGreaterEqual(
- self,
+ self.assertGreaterEqual(
len(res_dict['entries']),
test_case['playlist_mincount'],
'Expected at least %d in playlist %s, but got only %d' % (
test_case['playlist_mincount'], test_case['url'],
len(res_dict['entries'])))
if 'playlist_maxcount' in test_case:
- assertLessEqual(
- self,
+ self.assertLessEqual(
len(res_dict['entries']),
test_case['playlist_maxcount'],
'Expected at most %d in playlist %s, but got %d' % (
if params.get('test'):
expected_minsize = max(expected_minsize, 10000)
got_fsize = os.path.getsize(tc_filename)
- assertGreaterEqual(
- self, got_fsize, expected_minsize,
+ self.assertGreaterEqual(
+ got_fsize, expected_minsize,
'Expected %s to be at least %s, but it\'s only %s ' %
(tc_filename, format_bytes(expected_minsize),
format_bytes(got_fsize)))