gh-116417: Move 4 limited C API test files to _testlimitedcapi (#116571)

Move the following files from Modules/_testcapi/ to
Modules/_testlimitedcapi/:

* bytearray.c
* bytes.c
* pyos.c
* sys.c

Changes:

* Replace PyBytes_AS_STRING() with PyBytes_AsString().
* Replace PyBytes_GET_SIZE() with PyBytes_Size().
* Update related test_capi tests.
* Copy Modules/_testcapi/util.h to Modules/_testlimitedcapi/util.h.
This commit is contained in:
Victor Stinner 2024-03-11 11:28:16 +01:00 committed by GitHub
parent d8712fa0c7
commit 1cc02ca063
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 101 additions and 80 deletions

View file

@ -1,7 +1,7 @@
import unittest
from test.support import import_helper
_testcapi = import_helper.import_module('_testcapi')
_testlimitedcapi = import_helper.import_module('_testlimitedcapi')
from _testcapi import PY_SSIZE_T_MIN, PY_SSIZE_T_MAX
NULL = None
@ -19,7 +19,7 @@ class BytesLike:
class CAPITest(unittest.TestCase):
def test_check(self):
# Test PyBytes_Check()
check = _testcapi.bytes_check
check = _testlimitedcapi.bytes_check
self.assertTrue(check(b'abc'))
self.assertFalse(check('abc'))
self.assertFalse(check(bytearray(b'abc')))
@ -33,7 +33,7 @@ class CAPITest(unittest.TestCase):
def test_checkexact(self):
# Test PyBytes_CheckExact()
check = _testcapi.bytes_checkexact
check = _testlimitedcapi.bytes_checkexact
self.assertTrue(check(b'abc'))
self.assertFalse(check('abc'))
self.assertFalse(check(bytearray(b'abc')))
@ -47,7 +47,7 @@ class CAPITest(unittest.TestCase):
def test_fromstringandsize(self):
# Test PyBytes_FromStringAndSize()
fromstringandsize = _testcapi.bytes_fromstringandsize
fromstringandsize = _testlimitedcapi.bytes_fromstringandsize
self.assertEqual(fromstringandsize(b'abc'), b'abc')
self.assertEqual(fromstringandsize(b'abc', 2), b'ab')
@ -65,7 +65,7 @@ class CAPITest(unittest.TestCase):
def test_fromstring(self):
# Test PyBytes_FromString()
fromstring = _testcapi.bytes_fromstring
fromstring = _testlimitedcapi.bytes_fromstring
self.assertEqual(fromstring(b'abc\0def'), b'abc')
self.assertEqual(fromstring(b''), b'')
@ -74,7 +74,7 @@ class CAPITest(unittest.TestCase):
def test_fromobject(self):
# Test PyBytes_FromObject()
fromobject = _testcapi.bytes_fromobject
fromobject = _testlimitedcapi.bytes_fromobject
self.assertEqual(fromobject(b'abc'), b'abc')
self.assertEqual(fromobject(bytearray(b'abc')), b'abc')
@ -88,7 +88,7 @@ class CAPITest(unittest.TestCase):
def test_size(self):
# Test PyBytes_Size()
size = _testcapi.bytes_size
size = _testlimitedcapi.bytes_size
self.assertEqual(size(b'abc'), 3)
self.assertEqual(size(BytesSubclass(b'abc')), 3)
@ -100,7 +100,7 @@ class CAPITest(unittest.TestCase):
def test_asstring(self):
"""Test PyBytes_AsString()"""
asstring = _testcapi.bytes_asstring
asstring = _testlimitedcapi.bytes_asstring
self.assertEqual(asstring(b'abc', 4), b'abc\0')
self.assertEqual(asstring(b'abc\0def', 8), b'abc\0def\0')
@ -111,8 +111,8 @@ class CAPITest(unittest.TestCase):
def test_asstringandsize(self):
"""Test PyBytes_AsStringAndSize()"""
asstringandsize = _testcapi.bytes_asstringandsize
asstringandsize_null = _testcapi.bytes_asstringandsize_null
asstringandsize = _testlimitedcapi.bytes_asstringandsize
asstringandsize_null = _testlimitedcapi.bytes_asstringandsize_null
self.assertEqual(asstringandsize(b'abc', 4), (b'abc\0', 3))
self.assertEqual(asstringandsize(b'abc\0def', 8), (b'abc\0def\0', 7))
@ -128,7 +128,7 @@ class CAPITest(unittest.TestCase):
def test_repr(self):
# Test PyBytes_Repr()
bytes_repr = _testcapi.bytes_repr
bytes_repr = _testlimitedcapi.bytes_repr
self.assertEqual(bytes_repr(b'''abc''', 0), r"""b'abc'""")
self.assertEqual(bytes_repr(b'''abc''', 1), r"""b'abc'""")
@ -149,7 +149,7 @@ class CAPITest(unittest.TestCase):
def test_concat(self, concat=None):
"""Test PyBytes_Concat()"""
if concat is None:
concat = _testcapi.bytes_concat
concat = _testlimitedcapi.bytes_concat
self.assertEqual(concat(b'abc', b'def'), b'abcdef')
self.assertEqual(concat(b'a\0b', b'c\0d'), b'a\0bc\0d')
@ -182,11 +182,11 @@ class CAPITest(unittest.TestCase):
def test_concatanddel(self):
"""Test PyBytes_ConcatAndDel()"""
self.test_concat(_testcapi.bytes_concatanddel)
self.test_concat(_testlimitedcapi.bytes_concatanddel)
def test_decodeescape(self):
"""Test PyBytes_DecodeEscape()"""
decodeescape = _testcapi.bytes_decodeescape
decodeescape = _testlimitedcapi.bytes_decodeescape
self.assertEqual(decodeescape(b'abc'), b'abc')
self.assertEqual(decodeescape(br'\t\n\r\x0b\x0c\x00\\\'\"'),