summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Viktorin <encukou@gmail.com>2022-08-09 07:03:11 (GMT)
committerGitHub <noreply@github.com>2022-08-09 07:03:11 (GMT)
commiteb81c1aea16914347919745e843c982ed831a9fb (patch)
tree7dc524185b560e7420debef076120622679d1474
parent7c8626ab3db0b896052596066e1a2099b53ed135 (diff)
downloadcpython-eb81c1aea16914347919745e843c982ed831a9fb.zip
cpython-eb81c1aea16914347919745e843c982ed831a9fb.tar.gz
cpython-eb81c1aea16914347919745e843c982ed831a9fb.tar.bz2
Disable Limited API tests with Py_TRACE_REFS (GH-95796)
-rw-r--r--Lib/test/test_call.py4
-rw-r--r--Modules/_testcapi/vectorcall_limited.c15
2 files changed, 19 insertions, 0 deletions
diff --git a/Lib/test/test_call.py b/Lib/test/test_call.py
index d3a254f1..131b45e 100644
--- a/Lib/test/test_call.py
+++ b/Lib/test/test_call.py
@@ -9,6 +9,7 @@ import collections
import itertools
import gc
import contextlib
+import sys
class BadStr(str):
@@ -759,6 +760,9 @@ class TestPEP590(unittest.TestCase):
self.assertEqual(expected, meth(*args1, **kwargs))
self.assertEqual(expected, wrapped(*args, **kwargs))
+ @unittest.skipIf(
+ hasattr(sys, 'getobjects'),
+ "Limited API is not compatible with Py_TRACE_REFS")
def test_vectorcall_limited(self):
from _testcapi import pyobject_vectorcall
obj = _testcapi.LimitedVectorCallClass()
diff --git a/Modules/_testcapi/vectorcall_limited.c b/Modules/_testcapi/vectorcall_limited.c
index 63ea3b3..c518431 100644
--- a/Modules/_testcapi/vectorcall_limited.c
+++ b/Modules/_testcapi/vectorcall_limited.c
@@ -1,3 +1,16 @@
+#include "pyconfig.h" // Py_TRACE_REFS
+
+#ifdef Py_TRACE_REFS
+
+// Py_TRACE_REFS is incompatible with Limited API
+#include "parts.h"
+int
+_PyTestCapi_Init_VectorcallLimited(PyObject *m) {
+ return 0;
+}
+
+#else
+
#define Py_LIMITED_API 0x030c0000 // 3.12
#include "parts.h"
#include "structmember.h" // PyMemberDef
@@ -75,3 +88,5 @@ _PyTestCapi_Init_VectorcallLimited(PyObject *m) {
return 0;
}
+
+#endif // Py_TRACE_REFS