mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	
		
			
	
	
		
			137 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			137 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | import io | ||
|  | import textwrap | ||
|  | import unittest | ||
|  | from email import message_from_string, message_from_bytes | ||
|  | from email.generator import Generator, BytesGenerator | ||
|  | from email import policy | ||
|  | from test.test_email import TestEmailBase | ||
|  | 
 | ||
|  | # XXX: move generator tests from test_email into here at some point. | ||
|  | 
 | ||
|  | 
 | ||
|  | class TestGeneratorBase(): | ||
|  | 
 | ||
|  |     long_subject = { | ||
|  |         0: textwrap.dedent("""\
 | ||
|  |             To: whom_it_may_concern@example.com | ||
|  |             From: nobody_you_want_to_know@example.com | ||
|  |             Subject: We the willing led by the unknowing are doing the | ||
|  |              impossible for the ungrateful. We have done so much for so long with so little | ||
|  |              we are now qualified to do anything with nothing. | ||
|  | 
 | ||
|  |             None | ||
|  |             """),
 | ||
|  |         40: textwrap.dedent("""\
 | ||
|  |             To: whom_it_may_concern@example.com | ||
|  |             From:\x20 | ||
|  |              nobody_you_want_to_know@example.com | ||
|  |             Subject: We the willing led by the | ||
|  |              unknowing are doing the | ||
|  |              impossible for the ungrateful. We have | ||
|  |              done so much for so long with so little | ||
|  |              we are now qualified to do anything | ||
|  |              with nothing. | ||
|  | 
 | ||
|  |             None | ||
|  |             """),
 | ||
|  |         20: textwrap.dedent("""\
 | ||
|  |             To:\x20 | ||
|  |              whom_it_may_concern@example.com | ||
|  |             From:\x20 | ||
|  |              nobody_you_want_to_know@example.com | ||
|  |             Subject: We the | ||
|  |              willing led by the | ||
|  |              unknowing are doing | ||
|  |              the | ||
|  |              impossible for the | ||
|  |              ungrateful. We have | ||
|  |              done so much for so | ||
|  |              long with so little | ||
|  |              we are now | ||
|  |              qualified to do | ||
|  |              anything with | ||
|  |              nothing. | ||
|  | 
 | ||
|  |             None | ||
|  |             """),
 | ||
|  |         } | ||
|  |     long_subject[100] = long_subject[0] | ||
|  | 
 | ||
|  |     def maxheaderlen_parameter_test(self, n): | ||
|  |         msg = self.msgmaker(self.long_subject[0]) | ||
|  |         s = self.ioclass() | ||
|  |         g = self.genclass(s, maxheaderlen=n) | ||
|  |         g.flatten(msg) | ||
|  |         self.assertEqual(s.getvalue(), self.long_subject[n]) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_parameter_0(self): | ||
|  |         self.maxheaderlen_parameter_test(0) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_parameter_100(self): | ||
|  |         self.maxheaderlen_parameter_test(100) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_parameter_40(self): | ||
|  |         self.maxheaderlen_parameter_test(40) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_parameter_20(self): | ||
|  |         self.maxheaderlen_parameter_test(20) | ||
|  | 
 | ||
|  |     def maxheaderlen_policy_test(self, n): | ||
|  |         msg = self.msgmaker(self.long_subject[0]) | ||
|  |         s = self.ioclass() | ||
|  |         g = self.genclass(s, policy=policy.default.clone(max_line_length=n)) | ||
|  |         g.flatten(msg) | ||
|  |         self.assertEqual(s.getvalue(), self.long_subject[n]) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_policy_0(self): | ||
|  |         self.maxheaderlen_policy_test(0) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_policy_100(self): | ||
|  |         self.maxheaderlen_policy_test(100) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_policy_40(self): | ||
|  |         self.maxheaderlen_policy_test(40) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_policy_20(self): | ||
|  |         self.maxheaderlen_policy_test(20) | ||
|  | 
 | ||
|  |     def maxheaderlen_parm_overrides_policy_test(self, n): | ||
|  |         msg = self.msgmaker(self.long_subject[0]) | ||
|  |         s = self.ioclass() | ||
|  |         g = self.genclass(s, maxheaderlen=n, | ||
|  |                           policy=policy.default.clone(max_line_length=10)) | ||
|  |         g.flatten(msg) | ||
|  |         self.assertEqual(s.getvalue(), self.long_subject[n]) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_parm_overrides_policy_0(self): | ||
|  |         self.maxheaderlen_parm_overrides_policy_test(0) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_parm_overrides_policy_100(self): | ||
|  |         self.maxheaderlen_parm_overrides_policy_test(100) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_parm_overrides_policy_40(self): | ||
|  |         self.maxheaderlen_parm_overrides_policy_test(40) | ||
|  | 
 | ||
|  |     def test_maxheaderlen_parm_overrides_policy_20(self): | ||
|  |         self.maxheaderlen_parm_overrides_policy_test(20) | ||
|  | 
 | ||
|  | 
 | ||
|  | class TestGenerator(TestGeneratorBase, TestEmailBase): | ||
|  | 
 | ||
|  |     msgmaker = staticmethod(message_from_string) | ||
|  |     genclass = Generator | ||
|  |     ioclass = io.StringIO | ||
|  | 
 | ||
|  | 
 | ||
|  | class TestBytesGenerator(TestGeneratorBase, TestEmailBase): | ||
|  | 
 | ||
|  |     msgmaker = staticmethod(message_from_bytes) | ||
|  |     genclass = BytesGenerator | ||
|  |     ioclass = io.BytesIO | ||
|  |     long_subject = {key: x.encode('ascii') | ||
|  |         for key, x in TestGeneratorBase.long_subject.items()} | ||
|  | 
 | ||
|  | 
 | ||
|  | if __name__ == '__main__': | ||
|  |     unittest.main() |