From 0bdb82d45662bdfecfab410483d5bb4026dee418 Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 19 May 2025 10:39:04 -0400 Subject: [PATCH 1/4] Add tests for zero-sized bytes objects in test_bytes.py --- Lib/test/test_capi/test_bytes.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_capi/test_bytes.py b/Lib/test/test_capi/test_bytes.py index 5b61c73381542d..3c47b82a872c96 100644 --- a/Lib/test/test_capi/test_bytes.py +++ b/Lib/test/test_capi/test_bytes.py @@ -29,8 +29,9 @@ def test_check(self): self.assertFalse(check(3)) self.assertFalse(check([])) self.assertFalse(check(object())) + self.assertTrue(check(b'')) - # CRASHES check(NULL) + # CRASHES check(NULL) #PyBytes_Check() expects PyObject* def test_checkexact(self): # Test PyBytes_CheckExact() @@ -43,8 +44,9 @@ def test_checkexact(self): self.assertFalse(check(3)) self.assertFalse(check([])) self.assertFalse(check(object())) + self.assertTrue(check(b'')) - # CRASHES check(NULL) + # CRASHES check(NULL) #PyBytes_CheckExact() expects PyObject* def test_fromstringandsize(self): # Test PyBytes_FromStringAndSize() @@ -73,7 +75,7 @@ def test_fromstring(self): self.assertEqual(fromstring(b'abc\0def'), b'abc') self.assertEqual(fromstring(b''), b'') - # CRASHES fromstring(NULL) + # CRASHES fromstring(NULL) def test_fromobject(self): # Test PyBytes_FromObject() @@ -108,6 +110,7 @@ def test_asstring(self): self.assertEqual(asstring(b'abc', 4), b'abc\0') self.assertEqual(asstring(b'abc\0def', 8), b'abc\0def\0') + self.assertEqual(asstring(b'', 1), b'\0') self.assertRaises(TypeError, asstring, 'abc', 0) self.assertRaises(TypeError, asstring, object(), 0) @@ -120,6 +123,7 @@ def test_asstringandsize(self): self.assertEqual(asstringandsize(b'abc', 4), (b'abc\0', 3)) self.assertEqual(asstringandsize(b'abc\0def', 8), (b'abc\0def\0', 7)) + self.assertEqual(asstringandsize(b'', 1), (b'\0', 0)) self.assertEqual(asstringandsize_null(b'abc', 4), b'abc\0') self.assertRaises(ValueError, asstringandsize_null, b'abc\0def', 8) self.assertRaises(TypeError, asstringandsize, 'abc', 0) @@ -163,6 +167,7 @@ def test_concat(self, concat=None): self.assertEqual(concat(b'', bytearray(b'def')), b'def') self.assertEqual(concat(memoryview(b'xabcy')[1:4], b'def'), b'abcdef') self.assertEqual(concat(b'abc', memoryview(b'xdefy')[1:4]), b'abcdef') + self.assertEqual(concat(b'', b''), b'') self.assertEqual(concat(b'abc', b'def', True), b'abcdef') self.assertEqual(concat(b'abc', bytearray(b'def'), True), b'abcdef') From 0d867377c6b102f489a348e4e0174949e5a5c3de Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 19 May 2025 11:18:52 -0400 Subject: [PATCH 2/4] Fix trailing whitespace --- Lib/test/test_capi/test_bytes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_capi/test_bytes.py b/Lib/test/test_capi/test_bytes.py index 3c47b82a872c96..31c13d71ea4328 100644 --- a/Lib/test/test_capi/test_bytes.py +++ b/Lib/test/test_capi/test_bytes.py @@ -75,7 +75,7 @@ def test_fromstring(self): self.assertEqual(fromstring(b'abc\0def'), b'abc') self.assertEqual(fromstring(b''), b'') - # CRASHES fromstring(NULL) + # CRASHES fromstring(NULL) def test_fromobject(self): # Test PyBytes_FromObject() From 33e688ac5a7d14d97fd96aa017a5d5b81789c2b4 Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 19 May 2025 11:25:53 -0400 Subject: [PATCH 3/4] Fix trailing whitespace --- Lib/test/test_capi/test_bytes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_capi/test_bytes.py b/Lib/test/test_capi/test_bytes.py index 31c13d71ea4328..906faf11747440 100644 --- a/Lib/test/test_capi/test_bytes.py +++ b/Lib/test/test_capi/test_bytes.py @@ -31,7 +31,7 @@ def test_check(self): self.assertFalse(check(object())) self.assertTrue(check(b'')) - # CRASHES check(NULL) #PyBytes_Check() expects PyObject* + # CRASHES check(NULL) def test_checkexact(self): # Test PyBytes_CheckExact() @@ -46,7 +46,7 @@ def test_checkexact(self): self.assertFalse(check(object())) self.assertTrue(check(b'')) - # CRASHES check(NULL) #PyBytes_CheckExact() expects PyObject* + # CRASHES check(NULL) def test_fromstringandsize(self): # Test PyBytes_FromStringAndSize() From 570a334e0b98316af477912c01ef76dc8466171f Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 19 May 2025 15:15:46 -0400 Subject: [PATCH 4/4] Reorder lines --- Lib/test/test_capi/test_bytes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_capi/test_bytes.py b/Lib/test/test_capi/test_bytes.py index 906faf11747440..86d5692893fc98 100644 --- a/Lib/test/test_capi/test_bytes.py +++ b/Lib/test/test_capi/test_bytes.py @@ -22,6 +22,7 @@ def test_check(self): # Test PyBytes_Check() check = _testlimitedcapi.bytes_check self.assertTrue(check(b'abc')) + self.assertTrue(check(b'')) self.assertFalse(check('abc')) self.assertFalse(check(bytearray(b'abc'))) self.assertTrue(check(BytesSubclass(b'abc'))) @@ -29,7 +30,6 @@ def test_check(self): self.assertFalse(check(3)) self.assertFalse(check([])) self.assertFalse(check(object())) - self.assertTrue(check(b'')) # CRASHES check(NULL) @@ -37,6 +37,7 @@ def test_checkexact(self): # Test PyBytes_CheckExact() check = _testlimitedcapi.bytes_checkexact self.assertTrue(check(b'abc')) + self.assertTrue(check(b'')) self.assertFalse(check('abc')) self.assertFalse(check(bytearray(b'abc'))) self.assertFalse(check(BytesSubclass(b'abc'))) @@ -44,7 +45,6 @@ def test_checkexact(self): self.assertFalse(check(3)) self.assertFalse(check([])) self.assertFalse(check(object())) - self.assertTrue(check(b'')) # CRASHES check(NULL)