Skip to content

Commit 541f59b

Browse files
committed
Update test cases
1 parent ebd47a4 commit 541f59b

File tree

2 files changed

+28
-54
lines changed

2 files changed

+28
-54
lines changed

Lib/test/test_email/test_email.py

Lines changed: 14 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -736,36 +736,23 @@ def test_invalid_header_names(self):
736736
('', 'Empty name'),
737737
(' LeadingSpace', 'starts with space'),
738738
('TrailingSpace ', 'ends with space'),
739-
]
740-
for name, value in invalid_headers:
741-
with self.subTest(name=name, problem=value):
742-
with self.assertRaises(ValueError) as cm:
743-
Message().add_header(name, value)
744-
self.assertIn(f"Invalid header field name {name!r}", str(cm.exception))
745-
746-
invalid_ascii_headers = [
747739
('Header\x7F', 'Non-ASCII character'),
748740
('Header\x80', 'Extended ASCII'),
749741
]
750-
for name, value in invalid_ascii_headers:
751-
with self.subTest(name=name, problem=value):
752-
with self.assertRaises(ValueError) as cm:
753-
Message().add_header(name, value)
754-
self.assertIn(f"Header field name contains invalid characters: {name!r}", str(cm.exception))
755-
756-
for name, value in invalid_headers:
757-
with self.subTest(name=name, problem=value):
758-
with self.assertRaises(ValueError) as cm:
759-
m = Message()
760-
m[name] = value
761-
self.assertIn(f"Invalid header field name {name!r}", str(cm.exception))
762-
763-
for name, value in invalid_ascii_headers:
764-
with self.subTest(name=name, problem=value):
765-
with self.assertRaises(ValueError) as cm:
766-
m = Message()
767-
m[name] = value
768-
self.assertIn(f"Header field name contains invalid characters: {name!r}", str(cm.exception))
742+
for thispolicy in (email.policy.default, email.policy.compat32):
743+
for method in ('__setitem__', 'add_header'):
744+
for name, value in invalid_headers:
745+
with self.subTest(
746+
name=name,
747+
problem=name,
748+
policy=thispolicy.__class__.__name__,
749+
method=method,
750+
):
751+
with self.assertRaises(ValueError) as cm:
752+
getattr(Message(policy=thispolicy), method(name, value))
753+
msg = str(cm.exception)
754+
self.assertRegex(msg,'(?i)(?=.*invalid)(?=.*header)(?=.*name)')
755+
self.assertIn(f"{name!r}", msg)
769756

770757

771758
def test_binary_quopri_payload(self):

Lib/test/test_email/test_message.py

Lines changed: 14 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)