@@ -1012,36 +1012,23 @@ def test_invalid_header_names(self):
10121012 ('' , 'Empty name' ),
10131013 (' LeadingSpace' , 'starts with space' ),
10141014 ('TrailingSpace ' , 'ends with space' ),
1015- ]
1016- for name , value in invalid_headers :
1017- with self .subTest (name = name , problem = value ):
1018- with self .assertRaises (ValueError ) as cm :
1019- EmailMessage ().add_header (name , value )
1020- self .assertIn (f"Invalid header field name { name !r} " , str (cm .exception ))
1021-
1022- invalid_ascii_headers = [
10231015 ('Header\x7F ' , 'Non-ASCII character' ),
10241016 ('Header\x80 ' , 'Extended ASCII' ),
10251017 ]
1026- for name , value in invalid_ascii_headers :
1027- with self .subTest (name = name , problem = value ):
1028- with self .assertRaises (ValueError ) as cm :
1029- EmailMessage ().add_header (name , value )
1030- self .assertIn (f"Header field name contains invalid characters: { name !r} " , str (cm .exception ))
1031-
1032- for name , value in invalid_headers :
1033- with self .subTest (name = name , problem = value ):
1034- with self .assertRaises (ValueError ) as cm :
1035- m = EmailMessage ()
1036- m [name ] = value
1037- self .assertIn (f"Invalid header field name { name !r} " , str (cm .exception ))
1038-
1039- for name , value in invalid_ascii_headers :
1040- with self .subTest (name = name , problem = value ):
1041- with self .assertRaises (ValueError ) as cm :
1042- m = EmailMessage ()
1043- m [name ] = value
1044- self .assertIn (f"Header field name contains invalid characters: { name !r} " , str (cm .exception ))
1018+ for thispolicy in (policy .default , policy .compat32 ):
1019+ for method in ('__setitem__' , 'add_header' ):
1020+ for name , value in invalid_headers :
1021+ with self .subTest (
1022+ name = name ,
1023+ problem = name ,
1024+ policy = thispolicy .__class__ .__name__ ,
1025+ method = method ,
1026+ ):
1027+ with self .assertRaises (ValueError ) as cm :
1028+ getattr (EmailMessage (policy = thispolicy ), method (name , value ))
1029+ msg = str (cm .exception )
1030+ self .assertRegex ( msg , '(?i)(?=.*invalid)(?=.*header)(?=.*name)' )
1031+ self .assertIn (f"{ name !r} " , msg )
10451032
10461033 def test_get_body_malformed (self ):
10471034 """test for bpo-42892"""
0 commit comments