@@ -461,6 +461,24 @@ def test_grow(self):
461461 writer .grow (0 ) # noop
462462 self .assertEqual (writer .finish (), b'number=123' )
463463
464+ for size in (self .SMALL_BUFFER , self .LARGE_BUFFER ):
465+ with self .subTest (size = size ):
466+ # Truncate the last byte
467+ data = b'x' * size
468+ writer = self .create_writer (size )
469+ writer .write (0 , data )
470+ self .assertEqual (writer .get_data (), data )
471+ writer .grow (- 1 )
472+ self .assertEqual (writer .get_data (), data [:- 1 ])
473+ self .assertEqual (writer .finish (), data [:- 1 ])
474+
475+ # Make the buffer empty
476+ writer = self .create_writer (size )
477+ writer .write (0 , data )
478+ writer .grow (- size )
479+ self .assertEqual (writer .get_data (), b'' )
480+ self .assertEqual (writer .finish (), b'' )
481+
464482 # Switch from small buffer to large buffer
465483 writer = self .create_writer ()
466484 small , large = self .SMALL_BUFFER , self .LARGE_BUFFER
@@ -476,8 +494,8 @@ def test_grow(self):
476494 with self .subTest (size = size ):
477495 writer = self .create_writer ()
478496 writer .write_bytes (b'x' * size , - 1 )
479- with self .assertRaisesRegex (ValueError , 'size must be >= 0 ' ):
480- writer .grow (- 1 )
497+ with self .assertRaisesRegex (ValueError , 'invalid size ' ):
498+ writer .grow (- size - 1 )
481499 with self .assertRaises (MemoryError ):
482500 writer .grow (_testcapi .PY_SSIZE_T_MAX )
483501 self .assertEqual (writer .finish (), b'x' * size )
0 commit comments