From 490e0ad83ac72c5688dfbbab4eac61ccfd7be5fd Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Mon, 29 Jul 2024 10:23:23 -0600 Subject: [PATCH] gh-117482: Fix the Slot Wrapper Inheritance Tests (gh-122248) 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. --- Lib/test/support/__init__.py | 55 ++++++++++++++++++++++++++++++ Lib/test/test_embed.py | 57 ++++++++++++++++++++----------- Lib/test/test_types.py | 65 +++++++++++++++++++++--------------- Programs/_testembed.c | 14 ++++++-- 4 files changed, 143 insertions(+), 48 deletions(-) diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py index 37e3305036f499..f4dce793ff1acb 100644 --- a/Lib/test/support/__init__.py +++ b/Lib/test/support/__init__.py @@ -2608,6 +2608,61 @@ def copy_python_src_ignore(path, names): 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();