commit: 70b7e3fbb62e9bec12328bb9d506327fe77a85c0
parent 579657ad8726ab0cdefd98fbbb28f09fbcf94e96
Author: Philipp Hagemeister <phihag@phihag.de>
Date: Sun, 26 Oct 2014 20:49:51 +0100
[generic] Add a test case for direct links with broken HEAD (#4032)
Diffstat:
3 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/test/helper.py b/test/helper.py
@@ -171,3 +171,13 @@ def assertGreaterEqual(self, got, expected, msg=None):
if msg is None:
msg = '%r not greater than or equal to %r' % (got, expected)
self.assertTrue(got >= expected, msg)
+
+
+def expect_warnings(ydl, warnings_re):
+ real_warning = ydl.report_warning
+
+ def _report_warning(w):
+ if not any(re.search(w_re, w) for w_re in warnings_re):
+ real_warning(w)
+
+ ydl.report_warning = _report_warning
diff --git a/test/test_download.py b/test/test_download.py
@@ -8,6 +8,7 @@ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from test.helper import (
assertGreaterEqual,
+ expect_warnings,
get_params,
gettestcases,
expect_info_dict,
@@ -100,6 +101,7 @@ def generator(test_case):
if status['status'] == 'finished':
finished_hook_called.add(status['filename'])
ydl.add_progress_hook(_hook)
+ expect_warnings(ydl, test_case.get('expected_warnings', []))
def get_tc_filename(tc):
return tc.get('file') or ydl.prepare_filename(tc.get('info_dict', {}))
diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py
@@ -389,8 +389,23 @@ class GenericIE(InfoExtractor):
'title': 'Conversation about Hexagonal Rails Part 1 - ThoughtWorks',
'duration': 1715.0,
'uploader': 'thoughtworks.wistia.com',
- },
+ },
},
+ # Direct download with broken HEAD
+ {
+ 'url': 'http://ai-radio.org:8000/radio.opus',
+ 'info_dict': {
+ 'id': 'radio',
+ 'ext': 'opus',
+ 'title': 'radio',
+ },
+ 'params': {
+ 'skip_download': True, # infinite live stream
+ },
+ 'expected_warnings': [
+ r'501.*Not Implemented'
+ ],
+ }
]
def report_following_redirect(self, new_url):