add capability to suppress expected warnings in tests
This commit is contained in:
		
							parent
							
								
									e94b783c74
								
							
						
					
					
						commit
						00fcc17aee
					
				
					 3 changed files with 20 additions and 4 deletions
				
			
		| 
						 | 
					@ -1,6 +1,8 @@
 | 
				
			||||||
import io
 | 
					import io
 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
import os.path
 | 
					import os.path
 | 
				
			||||||
 | 
					import re
 | 
				
			||||||
 | 
					import types
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import youtube_dl.extractor
 | 
					import youtube_dl.extractor
 | 
				
			||||||
from youtube_dl import YoutubeDL, YoutubeDLHandler
 | 
					from youtube_dl import YoutubeDL, YoutubeDLHandler
 | 
				
			||||||
| 
						 | 
					@ -32,6 +34,19 @@ class FakeYDL(YoutubeDL):
 | 
				
			||||||
        raise Exception(s)
 | 
					        raise Exception(s)
 | 
				
			||||||
    def download(self, x):
 | 
					    def download(self, x):
 | 
				
			||||||
        self.result.append(x)
 | 
					        self.result.append(x)
 | 
				
			||||||
 | 
					    # def expect_warning(self, regex):
 | 
				
			||||||
 | 
					    #     # Silence an expected warning matching a regex
 | 
				
			||||||
 | 
					    #     def report_warning(self, message):
 | 
				
			||||||
 | 
					    #         if re.match(regex, message): return
 | 
				
			||||||
 | 
					    #         super(FakeYDL, self).report_warning(regex)
 | 
				
			||||||
 | 
					    #     self.report_warning = types.MethodType(report_warning, self)
 | 
				
			||||||
 | 
					    def expect_warning(self, regex):
 | 
				
			||||||
 | 
					        # Silence an expected warning matching a regex
 | 
				
			||||||
 | 
					        old_report_warning = self.report_warning
 | 
				
			||||||
 | 
					        def report_warning(self, message):
 | 
				
			||||||
 | 
					            if re.match(regex, message): return
 | 
				
			||||||
 | 
					            old_report_warning(message)
 | 
				
			||||||
 | 
					        self.report_warning = types.MethodType(report_warning, self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_testcases():
 | 
					def get_testcases():
 | 
				
			||||||
    for ie in youtube_dl.extractor.gen_extractors():
 | 
					    for ie in youtube_dl.extractor.gen_extractors():
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,8 +2,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import unittest
 | 
					import unittest
 | 
				
			||||||
import json
 | 
					 | 
				
			||||||
import io
 | 
					 | 
				
			||||||
import hashlib
 | 
					import hashlib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Allow direct execution
 | 
					# Allow direct execution
 | 
				
			||||||
| 
						 | 
					@ -45,15 +43,18 @@ class TestDailymotionSubtitles(unittest.TestCase):
 | 
				
			||||||
        subtitles = self.getSubtitles()
 | 
					        subtitles = self.getSubtitles()
 | 
				
			||||||
        self.assertEqual(len(subtitles.keys()), 5)
 | 
					        self.assertEqual(len(subtitles.keys()), 5)
 | 
				
			||||||
    def test_list_subtitles(self):
 | 
					    def test_list_subtitles(self):
 | 
				
			||||||
 | 
					        self.DL.expect_warning(u'Automatic Captions not supported by this server')
 | 
				
			||||||
        self.DL.params['listsubtitles'] = True
 | 
					        self.DL.params['listsubtitles'] = True
 | 
				
			||||||
        info_dict = self.getInfoDict()
 | 
					        info_dict = self.getInfoDict()
 | 
				
			||||||
        self.assertEqual(info_dict, None)
 | 
					        self.assertEqual(info_dict, None)
 | 
				
			||||||
    def test_automatic_captions(self):
 | 
					    def test_automatic_captions(self):
 | 
				
			||||||
 | 
					        self.DL.expect_warning(u'Automatic Captions not supported by this server')
 | 
				
			||||||
        self.DL.params['writeautomaticsub'] = True
 | 
					        self.DL.params['writeautomaticsub'] = True
 | 
				
			||||||
        self.DL.params['subtitleslang'] = ['en']
 | 
					        self.DL.params['subtitleslang'] = ['en']
 | 
				
			||||||
        subtitles = self.getSubtitles()
 | 
					        subtitles = self.getSubtitles()
 | 
				
			||||||
        self.assertTrue(len(subtitles.keys()) == 0)
 | 
					        self.assertTrue(len(subtitles.keys()) == 0)
 | 
				
			||||||
    def test_nosubtitles(self):
 | 
					    def test_nosubtitles(self):
 | 
				
			||||||
 | 
					        self.DL.expect_warning(u'video doesn\'t have subtitles')
 | 
				
			||||||
        self.url = 'http://www.dailymotion.com/video/x12u166_le-zapping-tele-star-du-08-aout-2013_tv'
 | 
					        self.url = 'http://www.dailymotion.com/video/x12u166_le-zapping-tele-star-du-08-aout-2013_tv'
 | 
				
			||||||
        self.DL.params['writesubtitles'] = True
 | 
					        self.DL.params['writesubtitles'] = True
 | 
				
			||||||
        self.DL.params['allsubtitles'] = True
 | 
					        self.DL.params['allsubtitles'] = True
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,8 +2,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import unittest
 | 
					import unittest
 | 
				
			||||||
import json
 | 
					 | 
				
			||||||
import io
 | 
					 | 
				
			||||||
import hashlib
 | 
					import hashlib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Allow direct execution
 | 
					# Allow direct execution
 | 
				
			||||||
| 
						 | 
					@ -56,6 +54,7 @@ class TestYoutubeSubtitles(unittest.TestCase):
 | 
				
			||||||
        subtitles = self.getSubtitles()
 | 
					        subtitles = self.getSubtitles()
 | 
				
			||||||
        self.assertEqual(md5(subtitles['en']), '356cdc577fde0c6783b9b822e7206ff7')
 | 
					        self.assertEqual(md5(subtitles['en']), '356cdc577fde0c6783b9b822e7206ff7')
 | 
				
			||||||
    def test_youtube_list_subtitles(self):
 | 
					    def test_youtube_list_subtitles(self):
 | 
				
			||||||
 | 
					        self.DL.expect_warning(u'Video doesn\'t have automatic captions')
 | 
				
			||||||
        self.DL.params['listsubtitles'] = True
 | 
					        self.DL.params['listsubtitles'] = True
 | 
				
			||||||
        info_dict = self.getInfoDict()
 | 
					        info_dict = self.getInfoDict()
 | 
				
			||||||
        self.assertEqual(info_dict, None)
 | 
					        self.assertEqual(info_dict, None)
 | 
				
			||||||
| 
						 | 
					@ -66,6 +65,7 @@ class TestYoutubeSubtitles(unittest.TestCase):
 | 
				
			||||||
        subtitles = self.getSubtitles()
 | 
					        subtitles = self.getSubtitles()
 | 
				
			||||||
        self.assertTrue(subtitles['it'] is not None)
 | 
					        self.assertTrue(subtitles['it'] is not None)
 | 
				
			||||||
    def test_youtube_nosubtitles(self):
 | 
					    def test_youtube_nosubtitles(self):
 | 
				
			||||||
 | 
					        self.DL.expect_warning(u'video doesn\'t have subtitles')
 | 
				
			||||||
        self.url = 'sAjKT8FhjI8'
 | 
					        self.url = 'sAjKT8FhjI8'
 | 
				
			||||||
        self.DL.params['writesubtitles'] = True
 | 
					        self.DL.params['writesubtitles'] = True
 | 
				
			||||||
        self.DL.params['allsubtitles'] = True
 | 
					        self.DL.params['allsubtitles'] = True
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue