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 sys | ||||
| import socket | ||||
| import hashlib | ||||
| 
 | ||||
| # Allow direct execution | ||||
| 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): | ||||
|     def __init__(self, *args, **kwargs): | ||||
|         youtube_dl.FileDownloader.__init__(self, *args, **kwargs) | ||||
|         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): | ||||
|     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: | ||||
|     parameters = json.load(pf) | ||||
| 
 | ||||
| 
 | ||||
| class TestDownload(unittest.TestCase): | ||||
|     def setUp(self): | ||||
|         self.parameters = parameters | ||||
| @ -68,18 +74,28 @@ def generator(test_case): | ||||
|         if 'skip' in test_case: | ||||
|             print('Skipping: {0}'.format(test_case['skip'])) | ||||
|             return | ||||
| 
 | ||||
|         params = dict(self.parameters) # Duplicate it locally | ||||
|         for p in test_case.get('params', {}): | ||||
|             params[p] = test_case['params'][p] | ||||
| 
 | ||||
|         fd = FileDownloader(params) | ||||
|         fd.add_info_extractor(ie()) | ||||
|         for ien in test_case.get('add_ie', []): | ||||
|             fd.add_info_extractor(getattr(youtube_dl.InfoExtractors, ien + 'IE')()) | ||||
|         fd.download([test_case['url']]) | ||||
| 
 | ||||
|         self.assertTrue(os.path.exists(test_case['file'])) | ||||
|         if 'md5' in test_case: | ||||
|             md5_for_file = _file_md5(test_case['file']) | ||||
|             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 | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,13 @@ | ||||
|   { | ||||
|     "name": "Youtube", | ||||
|     "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", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user