@@ -292,6 +292,11 @@ def test_b64decode_altchars(self):
292292 eq (base64 .b64decode (data , altchars = altchars_str ), res )
293293 eq (base64 .b64decode (data_str , altchars = altchars_str ), res )
294294
295+ self .assertRaises (ValueError , base64 .b64decode , b'' , altchars = b'+' )
296+ self .assertRaises (ValueError , base64 .b64decode , b'' , altchars = b'+/-' )
297+ self .assertRaises (ValueError , base64 .b64decode , '' , altchars = '+' )
298+ self .assertRaises (ValueError , base64 .b64decode , '' , altchars = '+/-' )
299+
295300 def test_b64decode_padding_error (self ):
296301 self .assertRaises (binascii .Error , base64 .b64decode , b'abc' )
297302 self .assertRaises (binascii .Error , base64 .b64decode , 'abc' )
@@ -323,13 +328,25 @@ def test_b64decode_invalid_chars(self):
323328 with self .assertRaises (binascii .Error ):
324329 base64 .b64decode (bstr .decode ('ascii' ), validate = True )
325330
326- # Normal alphabet characters not discarded when alternative given
327- res = b'\xfb \xef \xff '
328- self .assertEqual (base64 .b64decode (b'++//' , validate = True ), res )
329- self .assertEqual (base64 .b64decode (b'++//' , '-_' , validate = True ), res )
330- self .assertEqual (base64 .b64decode (b'--__' , '-_' , validate = True ), res )
331- self .assertEqual (base64 .urlsafe_b64decode (b'++//' ), res )
332- self .assertEqual (base64 .urlsafe_b64decode (b'--__' ), res )
331+ # Normal alphabet characters will be discarded when alternative given
332+ with self .assertWarns (FutureWarning ):
333+ self .assertEqual (base64 .b64decode (b'++++' , altchars = b'-_' ),
334+ b'\xfb \xef \xbe ' )
335+ with self .assertWarns (FutureWarning ):
336+ self .assertEqual (base64 .b64decode (b'////' , altchars = b'-_' ),
337+ b'\xff \xff \xff ' )
338+ with self .assertWarns (DeprecationWarning ):
339+ self .assertEqual (base64 .b64decode (b'++++' , altchars = b'-_' , validate = True ),
340+ b'\xfb \xef \xbe ' )
341+ with self .assertWarns (DeprecationWarning ):
342+ self .assertEqual (base64 .b64decode (b'////' , altchars = b'-_' , validate = True ),
343+ b'\xff \xff \xff ' )
344+ with self .assertWarns (FutureWarning ):
345+ self .assertEqual (base64 .urlsafe_b64decode (b'++++' ), b'\xfb \xef \xbe ' )
346+ with self .assertWarns (FutureWarning ):
347+ self .assertEqual (base64 .urlsafe_b64decode (b'////' ), b'\xff \xff \xff ' )
348+ with self .assertRaises (binascii .Error ):
349+ base64 .b64decode (b'+/!' , altchars = b'-_' )
333350
334351 def _altchars_strategy ():
335352 """Generate 'altchars' for base64 encoding."""
0 commit comments