Skip to content

Commit e14b81c

Browse files
committed
Update get_data() tests for canary byte
1 parent dc79819 commit e14b81c

1 file changed

Lines changed: 33 additions & 10 deletions

File tree

‎Lib/test/test_capi/test_bytes.py‎

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,11 @@ def test_join(self):
318318
bytes_join(b'', NULL)
319319

320320

321+
def get_data_canary(writer):
322+
size = writer.get_size() + 1
323+
return writer.get_data(size)
324+
325+
321326
class BaseWriterTest:
322327
RESULT_TYPE = NotImplementedError
323328
SMALL_BUFFER = 11 # bytes
@@ -426,6 +431,25 @@ def test_resize(self):
426431
writer.resize(len(b'number=123')) # noop
427432
self.assertEqual(writer.finish(), b'number=123')
428433

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+
429453
# Switch from small buffer to large buffer
430454
writer = self.create_writer()
431455
small, large = self.SMALL_BUFFER, self.LARGE_BUFFER
@@ -465,15 +489,16 @@ def test_grow(self):
465489
writer.grow(0) # noop
466490
self.assertEqual(writer.finish(), b'number=123')
467491

492+
CANARY_BYTE = self.CANARY_BYTE
468493
for size in (self.SMALL_BUFFER, self.LARGE_BUFFER):
469494
with self.subTest(size=size):
470495
# Truncate the last byte
471496
data = b'x' * size
472497
writer = self.create_writer(size)
473498
writer.write(0, data)
474-
self.assertEqual(writer.get_data(), data)
499+
self.assertEqual(get_data_canary(writer), data + CANARY_BYTE)
475500
writer.grow(-1)
476-
self.assertEqual(writer.get_data(), data[:-1])
501+
self.assertEqual(get_data_canary(writer), data[:-1] + CANARY_BYTE)
477502
self.assertEqual(writer.finish(), data[:-1])
478503

479504
# Make the buffer empty
@@ -567,18 +592,16 @@ def test_get_data_canary(self):
567592
# Test PyBytesWriter_GetData()
568593
NEW_BYTE = self.NEW_BYTE
569594
CANARY_BYTE = self.CANARY_BYTE
570-
canary_byte_size = len(CANARY_BYTE)
571-
572-
def get_data_canary():
573-
size = writer.get_size() + canary_byte_size
574-
return writer.get_data(size)
575595

576596
writer = self.create_writer(6)
577-
self.assertEqual(get_data_canary(), NEW_BYTE * 6 + CANARY_BYTE)
597+
self.assertEqual(get_data_canary(writer),
598+
NEW_BYTE * 6 + CANARY_BYTE)
578599
writer.write(0, b'abc')
579-
self.assertEqual(get_data_canary(), b'abc' + NEW_BYTE * 3 + CANARY_BYTE)
600+
self.assertEqual(get_data_canary(writer),
601+
b'abc' + NEW_BYTE * 3 + CANARY_BYTE)
580602
writer.write(3, b'123')
581-
self.assertEqual(get_data_canary(), b'abc123' + CANARY_BYTE)
603+
self.assertEqual(get_data_canary(writer),
604+
b'abc123' + CANARY_BYTE)
582605

583606

584607
class BytesWriterTest(BaseWriterTest, unittest.TestCase):

0 commit comments

Comments
 (0)