From 0855702f3f3855974609cf3e99334de0d5d166e3 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Mon, 2 Aug 2021 03:46:45 +0530 Subject: [PATCH] [test:download] Support testing with `ignore_no_formats_error` --- test/helper.py | 5 ++++- test/test_download.py | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/test/helper.py b/test/helper.py index b40ffe3ce..9599eab8e 100644 --- a/test/helper.py +++ b/test/helper.py @@ -198,7 +198,10 @@ def expect_info_dict(self, got_dict, expected_dict): expect_dict(self, got_dict, expected_dict) # Check for the presence of mandatory fields if got_dict.get('_type') not in ('playlist', 'multi_video'): - for key in ('id', 'url', 'title', 'ext'): + mandatory_fields = ['id', 'title'] + if expected_dict.get('ext'): + mandatory_fields.extend(('url', 'ext')) + for key in mandatory_fields: self.assertTrue(got_dict.get(key), 'Missing mandatory field %s' % key) # Check for mandatory fields that are automatically set by YoutubeDL for key in ['webpage_url', 'extractor', 'extractor_key']: diff --git a/test/test_download.py b/test/test_download.py index e4485ce81..546748454 100644 --- a/test/test_download.py +++ b/test/test_download.py @@ -108,8 +108,13 @@ def generator(test_case, tname): for tc in test_cases: info_dict = tc.get('info_dict', {}) - if not (info_dict.get('id') and info_dict.get('ext')): - raise Exception('Test definition incorrect. The output file cannot be known. Are both \'id\' and \'ext\' keys present?') + params = tc.get('params', {}) + if not info_dict.get('id'): + raise Exception('Test definition incorrect. \'id\' key is not present') + elif not info_dict.get('ext'): + if params.get('skip_download') and params.get('ignore_no_formats_error'): + continue + raise Exception('Test definition incorrect. The output file cannot be known. \'ext\' key is not present') if 'skip' in test_case: print_skipping(test_case['skip'])