add info_dict testing to test_download
This commit is contained in:
		
							parent
							
								
									056d857571
								
							
						
					
					
						commit
						0eaf520d77
					
				| @ -7,6 +7,7 @@ import json | |||||||
| import unittest | import unittest | ||||||
| import sys | import sys | ||||||
| import socket | import socket | ||||||
|  | import hashlib | ||||||
| 
 | 
 | ||||||
| # Allow direct execution | # Allow direct execution | ||||||
| sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | ||||||
| @ -28,8 +29,12 @@ socket.setdefaulttimeout(300) # 5 minutes should be enough (famous last words) | |||||||
| 
 | 
 | ||||||
| class FileDownloader(youtube_dl.FileDownloader): | class FileDownloader(youtube_dl.FileDownloader): | ||||||
|     def __init__(self, *args, **kwargs): |     def __init__(self, *args, **kwargs): | ||||||
|         youtube_dl.FileDownloader.__init__(self, *args, **kwargs) |  | ||||||
|         self.to_stderr = self.to_screen |         self.to_stderr = self.to_screen | ||||||
|  |         self.processed_info_dicts = [] | ||||||
|  |         return youtube_dl.FileDownloader.__init__(self, *args, **kwargs) | ||||||
|  |     def process_info(self, info_dict): | ||||||
|  |         self.processed_info_dicts.append(info_dict) | ||||||
|  |         return youtube_dl.FileDownloader.process_info(self, info_dict) | ||||||
| 
 | 
 | ||||||
| def _file_md5(fn): | def _file_md5(fn): | ||||||
|     with open(fn, 'rb') as f: |     with open(fn, 'rb') as f: | ||||||
| @ -40,6 +45,7 @@ with io.open(DEF_FILE, encoding='utf-8') as deff: | |||||||
| with io.open(PARAMETERS_FILE, encoding='utf-8') as pf: | with io.open(PARAMETERS_FILE, encoding='utf-8') as pf: | ||||||
|     parameters = json.load(pf) |     parameters = json.load(pf) | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| class TestDownload(unittest.TestCase): | class TestDownload(unittest.TestCase): | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|         self.parameters = parameters |         self.parameters = parameters | ||||||
| @ -68,18 +74,28 @@ def generator(test_case): | |||||||
|         if 'skip' in test_case: |         if 'skip' in test_case: | ||||||
|             print('Skipping: {0}'.format(test_case['skip'])) |             print('Skipping: {0}'.format(test_case['skip'])) | ||||||
|             return |             return | ||||||
|  | 
 | ||||||
|         params = dict(self.parameters) # Duplicate it locally |         params = dict(self.parameters) # Duplicate it locally | ||||||
|         for p in test_case.get('params', {}): |         for p in test_case.get('params', {}): | ||||||
|             params[p] = test_case['params'][p] |             params[p] = test_case['params'][p] | ||||||
|  | 
 | ||||||
|         fd = FileDownloader(params) |         fd = FileDownloader(params) | ||||||
|         fd.add_info_extractor(ie()) |         fd.add_info_extractor(ie()) | ||||||
|         for ien in test_case.get('add_ie', []): |         for ien in test_case.get('add_ie', []): | ||||||
|             fd.add_info_extractor(getattr(youtube_dl.InfoExtractors, ien + 'IE')()) |             fd.add_info_extractor(getattr(youtube_dl.InfoExtractors, ien + 'IE')()) | ||||||
|         fd.download([test_case['url']]) |         fd.download([test_case['url']]) | ||||||
|  | 
 | ||||||
|         self.assertTrue(os.path.exists(test_case['file'])) |         self.assertTrue(os.path.exists(test_case['file'])) | ||||||
|         if 'md5' in test_case: |         if 'md5' in test_case: | ||||||
|             md5_for_file = _file_md5(test_case['file']) |             md5_for_file = _file_md5(test_case['file']) | ||||||
|             self.assertEqual(md5_for_file, test_case['md5']) |             self.assertEqual(md5_for_file, test_case['md5']) | ||||||
|  |         info_dict = fd.processed_info_dicts[0] | ||||||
|  |         for (info_element, value) in test_case.get('info_dict', {}).items(): | ||||||
|  |             if value.startswith('md5:'): | ||||||
|  |                 md5_info_value = hashlib.md5(info_dict[info_element]).hexdigest() | ||||||
|  |                 self.assertEqual(value[3:], md5_info_value) | ||||||
|  |             else: | ||||||
|  |                 self.assertEqual(value, info_dict[info_element]) | ||||||
| 
 | 
 | ||||||
|     return test_template |     return test_template | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2,7 +2,13 @@ | |||||||
|   { |   { | ||||||
|     "name": "Youtube", |     "name": "Youtube", | ||||||
|     "url":  "http://www.youtube.com/watch?v=BaW_jenozKc", |     "url":  "http://www.youtube.com/watch?v=BaW_jenozKc", | ||||||
|     "file":  "BaW_jenozKc.mp4" |     "file":  "BaW_jenozKc.mp4", | ||||||
|  |     "info_dict": { | ||||||
|  |       "title": "youtube-dl test video \"'/\\ä↭𝕐", | ||||||
|  |       "uploader": "Philipp Hagemeister", | ||||||
|  |       "upload_date": "20121002", | ||||||
|  |       "description": "test chars:  \"'/\\ä↭𝕐\n\nThis is a test video for youtube-dl.\n\nFor more information, contact phihag@phihag.de ." | ||||||
|  |     } | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|     "name": "Dailymotion", |     "name": "Dailymotion", | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user