mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	| @@ -36,6 +36,18 @@ class InfoExtractorTestRequestHandler(http.server.BaseHTTPRequestHandler): | ||||
|             self.send_header('Content-Type', 'text/html; charset=utf-8') | ||||
|             self.end_headers() | ||||
|             self.wfile.write(TEAPOT_RESPONSE_BODY.encode()) | ||||
|         elif self.path == '/fake.m3u8': | ||||
|             self.send_response(200) | ||||
|             self.send_header('Content-Length', '1024') | ||||
|             self.end_headers() | ||||
|             self.wfile.write(1024 * b'\x00') | ||||
|         elif self.path == '/bipbop.m3u8': | ||||
|             with open('test/testdata/m3u8/bipbop_16x9.m3u8', 'rb') as f: | ||||
|                 data = f.read() | ||||
|             self.send_response(200) | ||||
|             self.send_header('Content-Length', str(len(data))) | ||||
|             self.end_headers() | ||||
|             self.wfile.write(data) | ||||
|         else: | ||||
|             assert False | ||||
| 
 | ||||
| @@ -2079,5 +2091,45 @@ jwplayer("mediaplayer").setup({"abouttext":"Visit Indie DB","aboutlink":"http:\/ | ||||
|                 self.ie._search_nuxt_json(HTML_TMPL.format(data), None, default=DEFAULT), DEFAULT) | ||||
| 
 | ||||
| 
 | ||||
| class TestInfoExtractorNetwork(unittest.TestCase): | ||||
|     def setUp(self, /): | ||||
|         self.httpd = http.server.HTTPServer( | ||||
|             ('127.0.0.1', 0), InfoExtractorTestRequestHandler) | ||||
|         self.port = http_server_port(self.httpd) | ||||
| 
 | ||||
|         self.server_thread = threading.Thread(target=self.httpd.serve_forever) | ||||
|         self.server_thread.daemon = True | ||||
|         self.server_thread.start() | ||||
| 
 | ||||
|         self.called = False | ||||
| 
 | ||||
|         def require_warning(*args, **kwargs): | ||||
|             self.called = True | ||||
| 
 | ||||
|         self.ydl = FakeYDL() | ||||
|         self.ydl.report_warning = require_warning | ||||
|         self.ie = DummyIE(self.ydl) | ||||
| 
 | ||||
|     def tearDown(self, /): | ||||
|         self.ydl.close() | ||||
|         self.httpd.shutdown() | ||||
|         self.httpd.server_close() | ||||
|         self.server_thread.join(1) | ||||
| 
 | ||||
|     def test_extract_m3u8_formats(self): | ||||
|         formats, subtitles = self.ie._extract_m3u8_formats_and_subtitles( | ||||
|             f'http://127.0.0.1:{self.port}/bipbop.m3u8', None, fatal=False) | ||||
|         self.assertFalse(self.called) | ||||
|         self.assertTrue(formats) | ||||
|         self.assertTrue(subtitles) | ||||
| 
 | ||||
|     def test_extract_m3u8_formats_warning(self): | ||||
|         formats, subtitles = self.ie._extract_m3u8_formats_and_subtitles( | ||||
|             f'http://127.0.0.1:{self.port}/fake.m3u8', None, fatal=False) | ||||
|         self.assertTrue(self.called, 'Warning was not issued for binary m3u8 file') | ||||
|         self.assertFalse(formats) | ||||
|         self.assertFalse(subtitles) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Simon Sawicki
					Simon Sawicki