@@ -431,25 +431,6 @@ def test_resize(self):
431431 writer .resize (len (b'number=123' )) # noop
432432 self .assertEqual (writer .finish (), b'number=123' )
433433
434- CANARY_BYTE = self .CANARY_BYTE
435- for size in (self .SMALL_BUFFER , self .LARGE_BUFFER ):
436- with self .subTest (size = size ):
437- # Truncate the last byte
438- data = b'x' * size
439- writer = self .create_writer (size )
440- writer .write (0 , data )
441- self .assertEqual (get_data_canary (writer ), data + CANARY_BYTE )
442- writer .resize (size - 1 )
443- self .assertEqual (get_data_canary (writer ), data [:- 1 ] + CANARY_BYTE )
444- self .assertEqual (writer .finish (), data [:- 1 ])
445-
446- # Make the buffer empty
447- writer = self .create_writer (size )
448- writer .write (0 , data )
449- writer .resize (0 )
450- self .assertEqual (writer .get_data (), b'' )
451- self .assertEqual (writer .finish (), b'' )
452-
453434 # Switch from small buffer to large buffer
454435 writer = self .create_writer ()
455436 small , large = self .SMALL_BUFFER , self .LARGE_BUFFER
@@ -471,6 +452,27 @@ def test_resize(self):
471452 writer .resize (_testcapi .PY_SSIZE_T_MAX )
472453 self .assertEqual (writer .finish (), b'x' * size )
473454
455+ @unittest .skipUnless (support .Py_DEBUG , 'need debug build' )
456+ def test_resize_canary (self ):
457+ CANARY_BYTE = self .CANARY_BYTE
458+ for size in (self .SMALL_BUFFER , self .LARGE_BUFFER ):
459+ with self .subTest (size = size ):
460+ # Truncate the last byte
461+ data = b'x' * size
462+ writer = self .create_writer (size )
463+ writer .write (0 , data )
464+ self .assertEqual (get_data_canary (writer ), data + CANARY_BYTE )
465+ writer .resize (size - 1 )
466+ self .assertEqual (get_data_canary (writer ), data [:- 1 ] + CANARY_BYTE )
467+ self .assertEqual (writer .finish (), data [:- 1 ])
468+
469+ # Make the buffer empty
470+ writer = self .create_writer (size )
471+ writer .write (0 , data )
472+ writer .resize (0 )
473+ self .assertEqual (writer .get_data (), b'' )
474+ self .assertEqual (writer .finish (), b'' )
475+
474476 def test_grow (self ):
475477 # Test PyBytesWriter_Grow()
476478 writer = self .create_writer (0 )
@@ -489,25 +491,6 @@ def test_grow(self):
489491 writer .grow (0 ) # noop
490492 self .assertEqual (writer .finish (), b'number=123' )
491493
492- CANARY_BYTE = self .CANARY_BYTE
493- for size in (self .SMALL_BUFFER , self .LARGE_BUFFER ):
494- with self .subTest (size = size ):
495- # Truncate the last byte
496- data = b'x' * size
497- writer = self .create_writer (size )
498- writer .write (0 , data )
499- self .assertEqual (get_data_canary (writer ), data + CANARY_BYTE )
500- writer .grow (- 1 )
501- self .assertEqual (get_data_canary (writer ), data [:- 1 ] + CANARY_BYTE )
502- self .assertEqual (writer .finish (), data [:- 1 ])
503-
504- # Make the buffer empty
505- writer = self .create_writer (size )
506- writer .write (0 , data )
507- writer .grow (- size )
508- self .assertEqual (writer .get_data (), b'' )
509- self .assertEqual (writer .finish (), b'' )
510-
511494 # Switch from small buffer to large buffer
512495 writer = self .create_writer ()
513496 small , large = self .SMALL_BUFFER , self .LARGE_BUFFER
@@ -529,6 +512,28 @@ def test_grow(self):
529512 writer .grow (_testcapi .PY_SSIZE_T_MAX )
530513 self .assertEqual (writer .finish (), b'x' * size )
531514
515+ @unittest .skipUnless (support .Py_DEBUG , 'need debug build' )
516+ def test_grow_canary (self ):
517+ CANARY_BYTE = self .CANARY_BYTE
518+ for size in (self .SMALL_BUFFER , self .LARGE_BUFFER ):
519+ with self .subTest (size = size ):
520+ # Truncate the last byte
521+ data = b'x' * size
522+ writer = self .create_writer (size )
523+ writer .write (0 , data )
524+ self .assertEqual (get_data_canary (writer ), data + CANARY_BYTE )
525+ writer .grow (- 1 )
526+ self .assertEqual (get_data_canary (writer ), data [:- 1 ] + CANARY_BYTE )
527+ self .assertEqual (writer .finish (), data [:- 1 ])
528+
529+ # Make the buffer empty
530+ writer = self .create_writer (size )
531+ writer .write (0 , data )
532+ writer .grow (- size )
533+ self .assertEqual (writer .get_data (), b'' )
534+ self .assertEqual (writer .finish (), b'' )
535+
536+
532537 @support .nomemtest
533538 def test_resize_error (self ):
534539 # Test PyBytesWriter_Resize() error
@@ -587,7 +592,7 @@ def test_canary_byte(self):
587592 self .assertIn (f'at position { size } ' .encode (),
588593 proc .err )
589594
590- @unittest .skipUnless (support .Py_DEBUG , 'need Py_DEBUG ' )
595+ @unittest .skipUnless (support .Py_DEBUG , 'need debug build ' )
591596 def test_get_data_canary (self ):
592597 # Test PyBytesWriter_GetData()
593598 NEW_BYTE = self .NEW_BYTE
0 commit comments