From: Eric Snow Date: Mon, 29 Jul 2024 16:25:17 +0000 (-0600) Subject: [3.12] gh-117482: Fix the Slot Wrapper Inheritance Tests (gh-122250) X-Git-Tag: v3.12.5~38 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5bd2ea2b94074d1a57ab24ef66a201817b2c1b91;p=thirdparty%2FPython%2Fcpython.git [3.12] gh-117482: Fix the Slot Wrapper Inheritance Tests (gh-122250) The tests were only checking cases where the slot wrapper was present in the initial case. They were missing when the slot wrapper was added in the additional initializations. This fixes that. (cherry-picked from commit 490e0ad83ac72c5688dfbbab4eac61ccfd7be5fd, AKA gh-122248) --- diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 585affcd3855..c2ef9f46c2ff 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -2413,3 +2413,58 @@ def copy_python_src_ignore(path, names): 'build', } return ignored + + +def iter_builtin_types(): + for obj in __builtins__.values(): + if not isinstance(obj, type): + continue + cls = obj + if cls.__module__ != 'builtins': + continue + yield cls + + +def iter_slot_wrappers(cls): + assert cls.__module__ == 'builtins', cls + + def is_slot_wrapper(name, value): + if not isinstance(value, types.WrapperDescriptorType): + assert not repr(value).startswith(' 3 + ? main_argc - 2 + : INIT_LOOPS; - for (int i=1; i <= INIT_LOOPS; i++) { - fprintf(stderr, "--- Loop #%d ---\n", i); + for (int i=0; i < loops; i++) { + fprintf(stderr, "--- Loop #%d ---\n", i+1); fflush(stderr); + if (main_argc > 3) { + code = main_argv[i+2]; + } + _testembed_Py_InitializeFromConfig(); int err = PyRun_SimpleString(code); Py_Finalize();