@@ -82,6 +82,8 @@ def stop(self):
8282
8383
8484class  BaseTestCase (unittest .TestCase ):
85+ 
86+     # Optional tuple (certfile, keyfile, password) to use for HTTPS servers. 
8587    tls  =  None 
8688
8789    def  setUp (self ):
@@ -335,10 +337,26 @@ def test_head_via_send_error(self):
335337def  certdata_file (* path ):
336338    return  os .path .join (os .path .dirname (__file__ ), "certdata" , * path )
337339
340+ class  DummyRequestHandler (NoLogRequestHandler , SimpleHTTPRequestHandler ):
341+     pass 
342+ 
343+ def  create_https_server (
344+     certfile ,
345+     keyfile = None ,
346+     password = None ,
347+     * ,
348+     address = ('localhost' , 0 ),
349+     request_handler = DummyRequestHandler ,
350+ 
351+ ):
352+     return  HTTPSServer (
353+         address , request_handler ,
354+         certfile = certfile , keyfile = keyfile , password = password 
355+     )
356+ 
338357
339358@unittest .skipIf (ssl  is  None , "requires ssl" ) 
340359class  BaseHTTPSServerTestCase (BaseTestCase ):
341- 
342360    CERTFILE  =  certdata_file ("keycert.pem" )
343361    ONLYCERT  =  certdata_file ("ssl_cert.pem" )
344362    ONLYKEY  =  certdata_file ("ssl_key.pem" )
@@ -374,15 +392,10 @@ def test_valid_certdata(self):
374392            (self .ONLYCERT , self .ONLYKEY_PROTECTED , self .KEY_PASSWORD ),
375393        ]
376394        for  certfile , keyfile , password  in  valid_certdata :
377-             server  =  HTTPSServer (
378-                 ('localhost' , 0 ),
379-                 BaseHTTPRequestHandler ,
380-                 certfile = certfile ,
381-                 keyfile = keyfile ,
382-                 password = password ,
383-             )
384-             self .assertIsInstance (server , HTTPSServer )
385-             server .server_close ()
395+             with  self .subTest (certfile = certfile , keyfile = keyfile ):
396+                 server  =  create_https_server (certfile , keyfile , password )
397+                 self .assertIsInstance (server , HTTPSServer )
398+                 server .server_close ()
386399
387400    def  test_invalid_certdata (self ):
388401        invalid_certdata  =  [
@@ -393,15 +406,10 @@ def test_invalid_certdata(self):
393406            (self .ONLYKEY , self .ONLYCERT , None ),
394407            (self .CERTFILE_PROTECTED , None , self .BADPASSWORD ),
395408        ]
396-         for  cerfile , keyfile , password  in  invalid_certdata :
397-             with  self .assertRaises (ssl .SSLError ):
398-                 HTTPSServer (
399-                     ('localhost' , 0 ),
400-                     self .request_handler ,
401-                     certfile = cerfile ,
402-                     keyfile = keyfile ,
403-                     password = password ,
404-                 )
409+         for  certfile , keyfile , password  in  invalid_certdata :
410+             with  self .subTest (certfile = certfile , keyfile = keyfile ):
411+                 with  self .assertRaises (ssl .SSLError ):
412+                     create_https_server (certfile , keyfile , password )
405413
406414
407415class  RequestHandlerLoggingTestCase (BaseTestCase ):
0 commit comments