diff options
author | Jesús <heckyel@hyperbola.info> | 2021-12-15 13:01:17 -0500 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2021-12-15 13:01:17 -0500 |
commit | 97eb14c3689ac0589c41948161bc3ca23be31d95 (patch) | |
tree | 1b4ccb2b7243fc09ca9baf1f7fe907436cc4af4a /test | |
parent | 8389a1296991bbb0b36c61dce7d0691c69d865bf (diff) | |
parent | 3116be32b404cbeca066d73a14079a11b8072faf (diff) | |
download | hypervideo-pre-97eb14c3689ac0589c41948161bc3ca23be31d95.tar.lz hypervideo-pre-97eb14c3689ac0589c41948161bc3ca23be31d95.tar.xz hypervideo-pre-97eb14c3689ac0589c41948161bc3ca23be31d95.zip |
updated from upstream | 15/12/2021 at 13:01
Diffstat (limited to 'test')
-rw-r--r-- | test/helper.py | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/test/helper.py b/test/helper.py index 5c0e645f9..aef78c79d 100644 --- a/test/helper.py +++ b/test/helper.py @@ -207,10 +207,47 @@ def expect_info_dict(self, got_dict, expected_dict): for key in ['webpage_url', 'extractor', 'extractor_key']: self.assertTrue(got_dict.get(key), 'Missing field: %s' % key) - # Are checkable fields missing from the test case definition? - test_info_dict = dict((key, value if not isinstance(value, compat_str) or len(value) < 250 else 'md5:' + md5(value)) - for key, value in got_dict.items() - if value and key in ('id', 'title', 'description', 'uploader', 'upload_date', 'timestamp', 'uploader_id', 'location', 'age_limit')) + ignored_fields = ( + # Format keys + 'url', 'manifest_url', 'format', 'format_id', 'format_note', 'width', 'height', 'resolution', + 'dynamic_range', 'tbr', 'abr', 'acodec', 'asr', 'vbr', 'fps', 'vcodec', 'container', 'filesize', + 'filesize_approx', 'player_url', 'protocol', 'fragment_base_url', 'fragments', 'preference', + 'language', 'language_preference', 'quality', 'source_preference', 'http_headers', + 'stretched_ratio', 'no_resume', 'has_drm', 'downloader_options', + + # RTMP formats + 'page_url', 'app', 'play_path', 'tc_url', 'flash_version', 'rtmp_live', 'rtmp_conn', 'rtmp_protocol', 'rtmp_real_time', + + # Lists + 'formats', 'thumbnails', 'subtitles', 'automatic_captions', 'comments', 'entries', + + # Auto-generated + 'playlist', 'format_index', 'webpage_url', 'video_ext', 'audio_ext', 'duration_string', 'epoch', 'fulltitle', + 'extractor', 'extractor_key', 'original_url', 'webpage_url_basename', 'filepath', 'infojson_filename', + + # Only live_status needs to be checked + 'is_live', 'was_live', + ) + + ignored_prefixes = ('', 'playlist', 'requested') + + def sanitize(key, value): + if isinstance(value, str) and len(value) > 100: + return f'md5:{md5(value)}' + elif isinstance(value, list) and len(value) > 10: + return f'count:{len(value)}' + return value + + test_info_dict = { + key: sanitize(key, value) for key, value in got_dict.items() + if value is not None and key not in ignored_fields and not any( + key.startswith(f'{prefix}_') for prefix in ignored_prefixes) + } + + # display_id may be generated from id + if test_info_dict.get('display_id') == test_info_dict['id']: + test_info_dict.pop('display_id') + missing_keys = set(test_info_dict.keys()) - set(expected_dict.keys()) if missing_keys: def _repr(v): |