mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[test] Fix httplib_validation_errors test for old Python versions (#7677)
				
					
				
			Fixes https://github.com/yt-dlp/yt-dlp/issues/7674 Authored by: coletdjnz
This commit is contained in:
		| @@ -785,22 +785,31 @@ class TestUrllibRequestHandler(TestRequestHandlerBase): | ||||
|                 validate_and_send(rh, Request(f'https://127.0.0.1:{self.https_port}/headers')) | ||||
| 
 | ||||
|     @pytest.mark.parametrize('handler', ['Urllib'], indirect=True) | ||||
|     def test_httplib_validation_errors(self, handler): | ||||
|     @pytest.mark.parametrize('req,match,version_check', [ | ||||
|         # https://github.com/python/cpython/blob/987b712b4aeeece336eed24fcc87a950a756c3e2/Lib/http/client.py#L1256 | ||||
|         # bpo-39603: Check implemented in 3.7.9+, 3.8.5+ | ||||
|         ( | ||||
|             Request('http://127.0.0.1', method='GET\n'), | ||||
|             'method can\'t contain control characters', | ||||
|             lambda v: v < (3, 7, 9) or (3, 8, 0) <= v < (3, 8, 5) | ||||
|         ), | ||||
|         # https://github.com/python/cpython/blob/987b712b4aeeece336eed24fcc87a950a756c3e2/Lib/http/client.py#L1265 | ||||
|         # bpo-38576: Check implemented in 3.7.8+, 3.8.3+ | ||||
|         ( | ||||
|             Request('http://127.0.0. 1', method='GET'), | ||||
|             'URL can\'t contain control characters', | ||||
|             lambda v: v < (3, 7, 8) or (3, 8, 0) <= v < (3, 8, 3) | ||||
|         ), | ||||
|         # https://github.com/python/cpython/blob/987b712b4aeeece336eed24fcc87a950a756c3e2/Lib/http/client.py#L1288C31-L1288C50 | ||||
|         (Request('http://127.0.0.1', headers={'foo\n': 'bar'}), 'Invalid header name', None), | ||||
|     ]) | ||||
|     def test_httplib_validation_errors(self, handler, req, match, version_check): | ||||
|         if version_check and version_check(sys.version_info): | ||||
|             pytest.skip(f'Python {sys.version} version does not have the required validation for this test.') | ||||
| 
 | ||||
|         with handler() as rh: | ||||
| 
 | ||||
|             # https://github.com/python/cpython/blob/987b712b4aeeece336eed24fcc87a950a756c3e2/Lib/http/client.py#L1256 | ||||
|             with pytest.raises(RequestError, match='method can\'t contain control characters') as exc_info: | ||||
|                 validate_and_send(rh, Request('http://127.0.0.1', method='GET\n')) | ||||
|             assert not isinstance(exc_info.value, TransportError) | ||||
| 
 | ||||
|             # https://github.com/python/cpython/blob/987b712b4aeeece336eed24fcc87a950a756c3e2/Lib/http/client.py#L1265 | ||||
|             with pytest.raises(RequestError, match='URL can\'t contain control characters') as exc_info: | ||||
|                 validate_and_send(rh, Request('http://127.0.0. 1', method='GET\n')) | ||||
|             assert not isinstance(exc_info.value, TransportError) | ||||
| 
 | ||||
|             # https://github.com/python/cpython/blob/987b712b4aeeece336eed24fcc87a950a756c3e2/Lib/http/client.py#L1288C31-L1288C50 | ||||
|             with pytest.raises(RequestError, match='Invalid header name') as exc_info: | ||||
|                 validate_and_send(rh, Request('http://127.0.0.1', headers={'foo\n': 'bar'})) | ||||
|             with pytest.raises(RequestError, match=match) as exc_info: | ||||
|                 validate_and_send(rh, req) | ||||
|             assert not isinstance(exc_info.value, TransportError) | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 coletdjnz
					coletdjnz