mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	gh-71679: Improve tests for repr() of bytes and bytearray (GH-138180)
* Merge existing tests test_repr_str and test_to_str.
* Add more tests for non-printable and non-ASCII bytes.
* Add tests for special escape sequences ('\t\n\r').
* Add tests for slashes.
* Add more tests for quotes.
* Add tests for subclasses.
* Add test for non-ASCII class name.
* Only apply @check_bytes_warnings for str() tests.
			
			
This commit is contained in:
		
							parent
							
								
									14a5ad1db1
								
							
						
					
					
						commit
						0dbbf61cc2
					
				
					 1 changed files with 40 additions and 19 deletions
				
			
		|  | @ -1957,16 +1957,43 @@ class AssortedBytesTest(unittest.TestCase): | ||||||
|     # Test various combinations of bytes and bytearray |     # Test various combinations of bytes and bytearray | ||||||
|     # |     # | ||||||
| 
 | 
 | ||||||
|     @check_bytes_warnings |     def test_bytes_repr(self, f=repr): | ||||||
|     def test_repr_str(self): |         self.assertEqual(f(b''), "b''") | ||||||
|         for f in str, repr: |  | ||||||
|             self.assertEqual(f(bytearray()), "bytearray(b'')") |  | ||||||
|             self.assertEqual(f(bytearray([0])), "bytearray(b'\\x00')") |  | ||||||
|             self.assertEqual(f(bytearray([0, 1, 254, 255])), |  | ||||||
|                              "bytearray(b'\\x00\\x01\\xfe\\xff')") |  | ||||||
|         self.assertEqual(f(b"abc"), "b'abc'") |         self.assertEqual(f(b"abc"), "b'abc'") | ||||||
|             self.assertEqual(f(b"'"), '''b"'"''') # ''' |         self.assertEqual(f(bytes([92])), r"b'\\'") | ||||||
|             self.assertEqual(f(b"'\""), r"""b'\'"'""") # ' |         self.assertEqual(f(bytes([0, 1, 254, 255])), r"b'\x00\x01\xfe\xff'") | ||||||
|  |         self.assertEqual(f(b'\a\b\t\n\v\f\r'), r"b'\x07\x08\t\n\x0b\x0c\r'") | ||||||
|  |         self.assertEqual(f(b'"'), """b'"'""") # '"' | ||||||
|  |         self.assertEqual(f(b"'"), '''b"'"''') # "'" | ||||||
|  |         self.assertEqual(f(b"'\""), r"""b'\'"'""") # '\'"' | ||||||
|  |         self.assertEqual(f(b"\"'\""), r"""b'"\'"'""") # '"\'"' | ||||||
|  |         self.assertEqual(f(b"'\"'"), r"""b'\'"\''""") # '\'"\'' | ||||||
|  |         self.assertEqual(f(BytesSubclass(b"abc")), "b'abc'") | ||||||
|  | 
 | ||||||
|  |     def test_bytearray_repr(self, f=repr): | ||||||
|  |         self.assertEqual(f(bytearray()), "bytearray(b'')") | ||||||
|  |         self.assertEqual(f(bytearray(b'abc')), "bytearray(b'abc')") | ||||||
|  |         self.assertEqual(f(bytearray([92])), r"bytearray(b'\\')") | ||||||
|  |         self.assertEqual(f(bytearray([0, 1, 254, 255])), | ||||||
|  |                             r"bytearray(b'\x00\x01\xfe\xff')") | ||||||
|  |         self.assertEqual(f(bytearray([7, 8, 9, 10, 11, 12, 13])), | ||||||
|  |                             r"bytearray(b'\x07\x08\t\n\x0b\x0c\r')") | ||||||
|  |         self.assertEqual(f(bytearray(b'"')), """bytearray(b'"')""") # '"' | ||||||
|  |         self.assertEqual(f(bytearray(b"'")), r'''bytearray(b"\'")''') # "\'" | ||||||
|  |         self.assertEqual(f(bytearray(b"'\"")), r"""bytearray(b'\'"')""") # '\'"' | ||||||
|  |         self.assertEqual(f(bytearray(b"\"'\"")), r"""bytearray(b'"\'"')""") # '"\'"' | ||||||
|  |         self.assertEqual(f(bytearray(b'\'"\'')), r"""bytearray(b'\'"\'')""") # '\'"\'' | ||||||
|  |         self.assertEqual(f(ByteArraySubclass(b"abc")), "ByteArraySubclass(b'abc')") | ||||||
|  |         self.assertEqual(f(ByteArraySubclass.Nested(b"abc")), "Nested(b'abc')") | ||||||
|  |         self.assertEqual(f(ByteArraySubclass.Ŭñıçöđë(b"abc")), "Ŭñıçöđë(b'abc')") | ||||||
|  | 
 | ||||||
|  |     @check_bytes_warnings | ||||||
|  |     def test_bytes_str(self): | ||||||
|  |         self.test_bytes_repr(str) | ||||||
|  | 
 | ||||||
|  |     @check_bytes_warnings | ||||||
|  |     def test_bytearray_str(self): | ||||||
|  |         self.test_bytearray_repr(str) | ||||||
| 
 | 
 | ||||||
|     @check_bytes_warnings |     @check_bytes_warnings | ||||||
|     def test_format(self): |     def test_format(self): | ||||||
|  | @ -2019,15 +2046,6 @@ def test_from_bytearray(self): | ||||||
|         b = bytearray(buf) |         b = bytearray(buf) | ||||||
|         self.assertEqual(b, bytearray(sample)) |         self.assertEqual(b, bytearray(sample)) | ||||||
| 
 | 
 | ||||||
|     @check_bytes_warnings |  | ||||||
|     def test_to_str(self): |  | ||||||
|         self.assertEqual(str(b''), "b''") |  | ||||||
|         self.assertEqual(str(b'x'), "b'x'") |  | ||||||
|         self.assertEqual(str(b'\x80'), "b'\\x80'") |  | ||||||
|         self.assertEqual(str(bytearray(b'')), "bytearray(b'')") |  | ||||||
|         self.assertEqual(str(bytearray(b'x')), "bytearray(b'x')") |  | ||||||
|         self.assertEqual(str(bytearray(b'\x80')), "bytearray(b'\\x80')") |  | ||||||
| 
 |  | ||||||
|     def test_literal(self): |     def test_literal(self): | ||||||
|         tests =  [ |         tests =  [ | ||||||
|             (b"Wonderful spam", "Wonderful spam"), |             (b"Wonderful spam", "Wonderful spam"), | ||||||
|  | @ -2235,6 +2253,9 @@ def __init__(me, *args, **kwargs): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class ByteArraySubclass(bytearray): | class ByteArraySubclass(bytearray): | ||||||
|  |     class Nested(bytearray): | ||||||
|  |         pass | ||||||
|  |     class Ŭñıçöđë(bytearray): | ||||||
|         pass |         pass | ||||||
| 
 | 
 | ||||||
| class ByteArraySubclassWithSlots(bytearray): | class ByteArraySubclassWithSlots(bytearray): | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Serhiy Storchaka
						Serhiy Storchaka