aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbashonly <bashonly@bashonly.com>2023-09-21 17:48:57 -0500
committerbashonly <bashonly@bashonly.com>2023-09-21 17:48:57 -0500
commit661c9a1d029296b28e0b2f8be8a72a43abaf6536 (patch)
tree5a22c763b33dfb5aaceb90a716188d786d63f2c8
parent568f08051841aedea968258889539741e26009e9 (diff)
[test:download] Test for `expected_exception`
Authored by: at-wat Co-authored-by: Atsushi Watanabe <atsushi.w@ieee.org>
-rwxr-xr-xtest/test_download.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/test_download.py b/test/test_download.py
index 6f00a4ded..253079249 100755
--- a/test/test_download.py
+++ b/test/test_download.py
@@ -31,6 +31,7 @@ from yt_dlp.utils import (
DownloadError,
ExtractorError,
UnavailableVideoError,
+ YoutubeDLError,
format_bytes,
join_nonempty,
)
@@ -100,6 +101,8 @@ def generator(test_case, tname):
print_skipping('IE marked as not _WORKING')
for tc in test_cases:
+ if tc.get('expected_exception'):
+ continue
info_dict = tc.get('info_dict', {})
params = tc.get('params', {})
if not info_dict.get('id'):
@@ -139,6 +142,17 @@ def generator(test_case, tname):
res_dict = None
+ def match_exception(err):
+ expected_exception = test_case.get('expected_exception')
+ if not expected_exception:
+ return False
+ if err.__class__.__name__ == expected_exception:
+ return True
+ for exc in err.exc_info:
+ if exc.__class__.__name__ == expected_exception:
+ return True
+ return False
+
def try_rm_tcs_files(tcs=None):
if tcs is None:
tcs = test_cases
@@ -161,6 +175,8 @@ def generator(test_case, tname):
except (DownloadError, ExtractorError) as err:
# Check if the exception is not a network related one
if not isinstance(err.exc_info[1], (TransportError, UnavailableVideoError)) or (isinstance(err.exc_info[1], HTTPError) and err.exc_info[1].status == 503):
+ if match_exception(err):
+ return
err.msg = f'{getattr(err, "msg", err)} ({tname})'
raise
@@ -171,6 +187,10 @@ def generator(test_case, tname):
print(f'Retrying: {try_num} failed tries\n\n##########\n\n')
try_num += 1
+ except YoutubeDLError as err:
+ if match_exception(err):
+ return
+ raise
else:
break