Skip to content

Commit 69efd73

Browse files
gh-158780: Reuse unstructured header test cases
1 parent fa54a1a commit 69efd73

1 file changed

Lines changed: 19 additions & 24 deletions

File tree

‎Lib/test/test_email/test_headerregistry.py‎

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -129,14 +129,19 @@ def test_defects_is_tuple(self):
129129
@parameterize
130130
class TestUnstructuredHeader(TestHeaderBase):
131131

132-
def defects_as_value(self, source, decoded, defects):
132+
def string_as_value(self, source, decoded, defects=(), folded=None):
133+
folded = source if folded is None else folded
133134
for name in ('Subject', 'X-Test'):
134135
with self.subTest(name=name):
135136
h = self.make_header(name, source)
136137
self.assertEqual(h, decoded)
137138
self.assertDefectsEqual(h.defects, defects)
139+
prefix = name + ':' + (' ' if source else '')
140+
self.assertEqual(h.fold(policy=policy.default), prefix + folded + '\n')
141+
142+
string_params = {
143+
'empty': ('', ''),
138144

139-
defects_params = {
140145
'valid_encoded_word': (
141146
'=?utf-8?q?caf=C3=A9?=',
142147
'café',
@@ -145,22 +150,26 @@ def defects_as_value(self, source, decoded, defects):
145150
'invalid_base64_padding': (
146151
'=?utf-8?b?YQ?=',
147152
'a',
148-
[errors.InvalidBase64PaddingDefect]),
153+
[errors.InvalidBase64PaddingDefect],
154+
'a'),
149155

150156
'invalid_base64_characters': (
151157
'=?utf-8?b?Y!Q==?=',
152158
'a',
153-
[errors.InvalidBase64CharactersDefect]),
159+
[errors.InvalidBase64CharactersDefect],
160+
'a'),
154161

155162
'undecodable_bytes': (
156163
'=?utf-8?q?=FF?=',
157164
'\ufffd',
158-
[errors.UndecodableBytesDefect] * 2),
165+
[errors.UndecodableBytesDefect] * 2,
166+
'=?unknown-8bit?q?=FF?='),
159167

160168
'unknown_charset': (
161169
'=?invalid-charset?q?word?=',
162170
'word',
163-
[errors.CharsetError]),
171+
[errors.CharsetError],
172+
'word'),
164173

165174
'non_printable_text': (
166175
'text\x00value',
@@ -170,28 +179,14 @@ def defects_as_value(self, source, decoded, defects):
170179
'combined_defects': (
171180
'prefix=?utf-8?b?YQ?=',
172181
'prefixa',
173-
[errors.InvalidHeaderDefect, errors.InvalidBase64PaddingDefect]),
182+
[errors.InvalidHeaderDefect, errors.InvalidBase64PaddingDefect],
183+
'prefixa'),
174184

175185
'missing_whitespace': (
176186
'prefix=?utf-8?q?word?=',
177187
'prefixword',
178-
[errors.InvalidHeaderDefect]),
179-
}
180-
181-
def string_as_value(self,
182-
source,
183-
decoded,
184-
*args):
185-
l = len(args)
186-
defects = args[0] if l>0 else []
187-
header = 'Subject:' + (' ' if source else '')
188-
folded = header + (args[1] if l>1 else source) + '\n'
189-
h = self.make_header('Subject', source)
190-
self.assertEqual(h, decoded)
191-
self.assertDefectsEqual(h.defects, defects)
192-
self.assertEqual(h.fold(policy=policy.default), folded)
193-
194-
string_params = {
188+
[errors.InvalidHeaderDefect],
189+
'prefixword'),
195190

196191
'rfc2047_simple_quopri': (
197192
'=?utf-8?q?this_is_a_test?=',

0 commit comments

Comments
 (0)