diff --git a/Modules/Setup.stdlib.in b/Modules/Setup.stdlib.in
index 62027eec0d43c9..33608055962db5 100644
--- a/Modules/Setup.stdlib.in
+++ b/Modules/Setup.stdlib.in
@@ -168,7 +168,7 @@
@MODULE__XXTESTFUZZ_TRUE@_xxtestfuzz _xxtestfuzz/_xxtestfuzz.c _xxtestfuzz/fuzzer.c
@MODULE__TESTBUFFER_TRUE@_testbuffer _testbuffer.c
@MODULE__TESTINTERNALCAPI_TRUE@_testinternalcapi _testinternalcapi.c
-@MODULE__TESTCAPI_TRUE@_testcapi _testcapimodule.c _testcapi/vectorcall.c _testcapi/vectorcall_limited.c _testcapi/heaptype.c _testcapi/abstract.c _testcapi/unicode.c _testcapi/dict.c _testcapi/set.c _testcapi/getargs.c _testcapi/pytime.c _testcapi/datetime.c _testcapi/docstring.c _testcapi/mem.c _testcapi/watchers.c _testcapi/long.c _testcapi/float.c _testcapi/structmember.c _testcapi/exceptions.c _testcapi/code.c _testcapi/buffer.c _testcapi/pyos.c _testcapi/immortal.c _testcapi/heaptype_relative.c _testcapi/gc.c _testcapi/sys.c
+@MODULE__TESTCAPI_TRUE@_testcapi _testcapimodule.c _testcapi/vectorcall.c _testcapi/vectorcall_limited.c _testcapi/heaptype.c _testcapi/abstract.c _testcapi/bytearray.c _testcapi/bytes.c _testcapi/unicode.c _testcapi/dict.c _testcapi/set.c _testcapi/list.c _testcapi/tuple.c _testcapi/getargs.c _testcapi/pytime.c _testcapi/datetime.c _testcapi/docstring.c _testcapi/mem.c _testcapi/watchers.c _testcapi/long.c _testcapi/float.c _testcapi/complex.c _testcapi/numbers.c _testcapi/structmember.c _testcapi/exceptions.c _testcapi/code.c _testcapi/buffer.c _testcapi/pyos.c _testcapi/file.c _testcapi/codec.c _testcapi/immortal.c _testcapi/heaptype_relative.c _testcapi/gc.c _testcapi/sys.c
@MODULE__TESTCLINIC_TRUE@_testclinic _testclinic.c
# Some testing modules MUST be built as shared libraries.
diff --git a/Modules/_testcapi/bytearray.c b/Modules/_testcapi/bytearray.c
new file mode 100644
index 00000000000000..6ddb8fe1d5f6b5
--- /dev/null
+++ b/Modules/_testcapi/bytearray.c
@@ -0,0 +1,17 @@
+#include "parts.h"
+#include "util.h"
+
+
+static PyMethodDef test_methods[] = {
+ {NULL},
+};
+
+int
+_PyTestCapi_Init_ByteArray(PyObject *m)
+{
+ if (PyModule_AddFunctions(m, test_methods) < 0) {
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/Modules/_testcapi/bytes.c b/Modules/_testcapi/bytes.c
new file mode 100644
index 00000000000000..9fea716bfbcfd1
--- /dev/null
+++ b/Modules/_testcapi/bytes.c
@@ -0,0 +1,17 @@
+#include "parts.h"
+#include "util.h"
+
+
+static PyMethodDef test_methods[] = {
+ {NULL},
+};
+
+int
+_PyTestCapi_Init_Bytes(PyObject *m)
+{
+ if (PyModule_AddFunctions(m, test_methods) < 0) {
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/Modules/_testcapi/codec.c b/Modules/_testcapi/codec.c
new file mode 100644
index 00000000000000..d13f51e20331a1
--- /dev/null
+++ b/Modules/_testcapi/codec.c
@@ -0,0 +1,17 @@
+#include "parts.h"
+#include "util.h"
+
+
+static PyMethodDef test_methods[] = {
+ {NULL},
+};
+
+int
+_PyTestCapi_Init_Codec(PyObject *m)
+{
+ if (PyModule_AddFunctions(m, test_methods) < 0){
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/Modules/_testcapi/complex.c b/Modules/_testcapi/complex.c
new file mode 100644
index 00000000000000..0402b8ecc9588f
--- /dev/null
+++ b/Modules/_testcapi/complex.c
@@ -0,0 +1,16 @@
+#include "parts.h"
+#include "util.h"
+
+static PyMethodDef test_methods[] = {
+ {NULL},
+};
+
+int
+_PyTestCapi_Init_Complex(PyObject *mod)
+{
+ if (PyModule_AddFunctions(mod, test_methods) < 0) {
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/Modules/_testcapi/file.c b/Modules/_testcapi/file.c
new file mode 100644
index 00000000000000..634563f6ea12cb
--- /dev/null
+++ b/Modules/_testcapi/file.c
@@ -0,0 +1,17 @@
+#include "parts.h"
+#include "util.h"
+
+
+static PyMethodDef test_methods[] = {
+ {NULL},
+};
+
+int
+_PyTestCapi_Init_File(PyObject *m)
+{
+ if (PyModule_AddFunctions(m, test_methods) < 0){
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/Modules/_testcapi/list.c b/Modules/_testcapi/list.c
new file mode 100644
index 00000000000000..9329ddc3bddab4
--- /dev/null
+++ b/Modules/_testcapi/list.c
@@ -0,0 +1,17 @@
+#include "parts.h"
+#include "util.h"
+
+
+static PyMethodDef test_methods[] = {
+ {NULL},
+};
+
+int
+_PyTestCapi_Init_List(PyObject *m)
+{
+ if (PyModule_AddFunctions(m, test_methods) < 0){
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/Modules/_testcapi/numbers.c b/Modules/_testcapi/numbers.c
new file mode 100644
index 00000000000000..6f7fa3fa7a4186
--- /dev/null
+++ b/Modules/_testcapi/numbers.c
@@ -0,0 +1,16 @@
+#include "parts.h"
+#include "util.h"
+
+static PyMethodDef test_methods[] = {
+ {NULL},
+};
+
+int
+_PyTestCapi_Init_Numbers(PyObject *mod)
+{
+ if (PyModule_AddFunctions(mod, test_methods) < 0) {
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/Modules/_testcapi/parts.h b/Modules/_testcapi/parts.h
index c119c354aafa15..1dd0995b87fd9e 100644
--- a/Modules/_testcapi/parts.h
+++ b/Modules/_testcapi/parts.h
@@ -27,6 +27,8 @@
int _PyTestCapi_Init_Vectorcall(PyObject *module);
int _PyTestCapi_Init_Heaptype(PyObject *module);
int _PyTestCapi_Init_Abstract(PyObject *module);
+int _PyTestCapi_Init_ByteArray(PyObject *module);
+int _PyTestCapi_Init_Bytes(PyObject *module);
int _PyTestCapi_Init_Unicode(PyObject *module);
int _PyTestCapi_Init_GetArgs(PyObject *module);
int _PyTestCapi_Init_PyTime(PyObject *module);
@@ -36,16 +38,22 @@ int _PyTestCapi_Init_Mem(PyObject *module);
int _PyTestCapi_Init_Watchers(PyObject *module);
int _PyTestCapi_Init_Long(PyObject *module);
int _PyTestCapi_Init_Float(PyObject *module);
+int _PyTestCapi_Init_Complex(PyObject *module);
+int _PyTestCapi_Init_Numbers(PyObject *module);
int _PyTestCapi_Init_Dict(PyObject *module);
int _PyTestCapi_Init_Set(PyObject *module);
+int _PyTestCapi_Init_List(PyObject *module);
+int _PyTestCapi_Init_Tuple(PyObject *module);
int _PyTestCapi_Init_Structmember(PyObject *module);
int _PyTestCapi_Init_Exceptions(PyObject *module);
int _PyTestCapi_Init_Code(PyObject *module);
int _PyTestCapi_Init_Buffer(PyObject *module);
int _PyTestCapi_Init_PyOS(PyObject *module);
+int _PyTestCapi_Init_File(PyObject *module);
+int _PyTestCapi_Init_Codec(PyObject *module);
int _PyTestCapi_Init_Immortal(PyObject *module);
-int _PyTestCapi_Init_GC(PyObject *mod);
-int _PyTestCapi_Init_Sys(PyObject *);
+int _PyTestCapi_Init_GC(PyObject *module);
+int _PyTestCapi_Init_Sys(PyObject *module);
#ifdef LIMITED_API_AVAILABLE
int _PyTestCapi_Init_VectorcallLimited(PyObject *module);
diff --git a/Modules/_testcapi/tuple.c b/Modules/_testcapi/tuple.c
new file mode 100644
index 00000000000000..95dde8c0edadbe
--- /dev/null
+++ b/Modules/_testcapi/tuple.c
@@ -0,0 +1,17 @@
+#include "parts.h"
+#include "util.h"
+
+
+static PyMethodDef test_methods[] = {
+ {NULL},
+};
+
+int
+_PyTestCapi_Init_Tuple(PyObject *m)
+{
+ if (PyModule_AddFunctions(m, test_methods) < 0){
+ return -1;
+ }
+
+ return 0;
+}
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 790e9545fe7659..b1cb9350e5984c 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -3979,6 +3979,12 @@ PyInit__testcapi(void)
if (_PyTestCapi_Init_Abstract(m) < 0) {
return NULL;
}
+ if (_PyTestCapi_Init_ByteArray(m) < 0) {
+ return NULL;
+ }
+ if (_PyTestCapi_Init_Bytes(m) < 0) {
+ return NULL;
+ }
if (_PyTestCapi_Init_Unicode(m) < 0) {
return NULL;
}
@@ -4006,12 +4012,24 @@ PyInit__testcapi(void)
if (_PyTestCapi_Init_Float(m) < 0) {
return NULL;
}
+ if (_PyTestCapi_Init_Complex(m) < 0) {
+ return NULL;
+ }
+ if (_PyTestCapi_Init_Numbers(m) < 0) {
+ return NULL;
+ }
if (_PyTestCapi_Init_Dict(m) < 0) {
return NULL;
}
if (_PyTestCapi_Init_Set(m) < 0) {
return NULL;
}
+ if (_PyTestCapi_Init_List(m) < 0) {
+ return NULL;
+ }
+ if (_PyTestCapi_Init_Tuple(m) < 0) {
+ return NULL;
+ }
if (_PyTestCapi_Init_Structmember(m) < 0) {
return NULL;
}
@@ -4027,6 +4045,12 @@ PyInit__testcapi(void)
if (_PyTestCapi_Init_PyOS(m) < 0) {
return NULL;
}
+ if (_PyTestCapi_Init_File(m) < 0) {
+ return NULL;
+ }
+ if (_PyTestCapi_Init_Codec(m) < 0) {
+ return NULL;
+ }
if (_PyTestCapi_Init_Sys(m) < 0) {
return NULL;
}
diff --git a/PCbuild/_testcapi.vcxproj b/PCbuild/_testcapi.vcxproj
index ce4cb7445669e1..e032e67c256426 100644
--- a/PCbuild/_testcapi.vcxproj
+++ b/PCbuild/_testcapi.vcxproj
@@ -100,21 +100,29 @@
+
+
+
+
+
+
+
+
diff --git a/PCbuild/_testcapi.vcxproj.filters b/PCbuild/_testcapi.vcxproj.filters
index 284adf90373d71..e985856a6a92a5 100644
--- a/PCbuild/_testcapi.vcxproj.filters
+++ b/PCbuild/_testcapi.vcxproj.filters
@@ -30,12 +30,27 @@
Source Files
+
+ Source Files
+
+
+ Source Files
+
Source Files
Source Files
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
Source Files
@@ -57,6 +72,12 @@
Source Files
+
+ Source Files
+
+
+ Source Files
+
Source Files
@@ -72,6 +93,12 @@
Source Files
+
+ Source Files
+
+
+ Source Files
+
Source Files