mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
gh-68552: fix defects policy (#138579)
Extend defect handling via policy to a couple of missed defects. --------- Co-authored-by: Martin Panter <vadmium@users.noreply.github.com> Co-authored-by: Ivo Bellin Salarin <ivo@nilleb.com>
This commit is contained in:
parent
ed4f78a4b3
commit
9d707d8a64
4 changed files with 48 additions and 94 deletions
|
|
@ -126,12 +126,10 @@ def test_multipart_invalid_cte(self):
|
|||
errors.InvalidMultipartContentTransferEncodingDefect)
|
||||
|
||||
def test_multipart_no_cte_no_defect(self):
|
||||
if self.raise_expected: return
|
||||
msg = self._str_msg(self.multipart_msg.format(''))
|
||||
self.assertEqual(len(self.get_defects(msg)), 0)
|
||||
|
||||
def test_multipart_valid_cte_no_defect(self):
|
||||
if self.raise_expected: return
|
||||
for cte in ('7bit', '8bit', 'BINary'):
|
||||
msg = self._str_msg(
|
||||
self.multipart_msg.format("\nContent-Transfer-Encoding: "+cte))
|
||||
|
|
@ -300,6 +298,47 @@ def test_missing_ending_boundary(self):
|
|||
self.assertDefectsEqual(self.get_defects(msg),
|
||||
[errors.CloseBoundaryNotFoundDefect])
|
||||
|
||||
def test_line_beginning_colon(self):
|
||||
string = (
|
||||
"Subject: Dummy subject\r\n: faulty header line\r\n\r\nbody\r\n"
|
||||
)
|
||||
|
||||
with self._raise_point(errors.InvalidHeaderDefect):
|
||||
msg = self._str_msg(string)
|
||||
self.assertEqual(len(self.get_defects(msg)), 1)
|
||||
self.assertDefectsEqual(
|
||||
self.get_defects(msg), [errors.InvalidHeaderDefect]
|
||||
)
|
||||
|
||||
if msg:
|
||||
self.assertEqual(msg.items(), [("Subject", "Dummy subject")])
|
||||
self.assertEqual(msg.get_payload(), "body\r\n")
|
||||
|
||||
def test_misplaced_envelope(self):
|
||||
string = (
|
||||
"Subject: Dummy subject\r\nFrom wtf\r\nTo: abc\r\n\r\nbody\r\n"
|
||||
)
|
||||
with self._raise_point(errors.MisplacedEnvelopeHeaderDefect):
|
||||
msg = self._str_msg(string)
|
||||
self.assertEqual(len(self.get_defects(msg)), 1)
|
||||
self.assertDefectsEqual(
|
||||
self.get_defects(msg), [errors.MisplacedEnvelopeHeaderDefect]
|
||||
)
|
||||
|
||||
if msg:
|
||||
headers = [("Subject", "Dummy subject"), ("To", "abc")]
|
||||
self.assertEqual(msg.items(), headers)
|
||||
self.assertEqual(msg.get_payload(), "body\r\n")
|
||||
|
||||
|
||||
|
||||
class TestCompat32(TestDefectsBase, TestEmailBase):
|
||||
|
||||
policy = policy.compat32
|
||||
|
||||
def get_defects(self, obj):
|
||||
return obj.defects
|
||||
|
||||
|
||||
class TestDefectDetection(TestDefectsBase, TestEmailBase):
|
||||
|
||||
|
|
@ -332,6 +371,9 @@ def _raise_point(self, defect):
|
|||
with self.assertRaises(defect):
|
||||
yield
|
||||
|
||||
def get_defects(self, obj):
|
||||
return obj.defects
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue