From d459e9ccfb366e90615e9b6b3314da3c0f3f04af Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 14 May 2026 12:08:46 +0200 Subject: [PATCH 1/3] Add pdb coverage for supported debug behavior. GR-71866 --- .../src/tests/test_pdb.py | 82 ++++++++++++++++++- .../src/tests/unittest_tags/test_pdb.txt | 4 +- 2 files changed, 83 insertions(+), 3 deletions(-) diff --git a/graalpython/com.oracle.graal.python.test/src/tests/test_pdb.py b/graalpython/com.oracle.graal.python.test/src/tests/test_pdb.py index 3028614d89..2eb4fa7a5d 100644 --- a/graalpython/com.oracle.graal.python.test/src/tests/test_pdb.py +++ b/graalpython/com.oracle.graal.python.test/src/tests/test_pdb.py @@ -1,4 +1,4 @@ -# Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2023, 2026, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # The Universal Permissive License (UPL), Version 1.0 @@ -100,6 +100,86 @@ def doctest_pdb_locals(): """ +# Extracted from CPython test_pdb_basic_commands and test_pdb_issue_gh_91742. +# The full upstream doctests require unsupported Bytecode DSL f_lineno jumps; +# these keep the non-jump debugger coverage that is still relevant. +def doctest_pdb_args_for_kwonly_and_posonly(): + """ + Test that args displays keyword-only and positional-only parameters. + + >>> def kwonly_func(arg=None, *, kwonly=None): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + ... pass + + >>> def posonly_func(a, b, /, c=None): + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + ... pass + + >>> with PdbTestInput([ + ... 'args', + ... 'continue', + ... 'args', + ... 'continue', + ... ]): + ... kwonly_func('value', kwonly=True) + ... posonly_func(1, 2, c=3) + > (3)kwonly_func() + -> pass + (Pdb) args + arg = 'value' + kwonly = True + (Pdb) continue + > (3)posonly_func() + -> pass + (Pdb) args + a = 1 + b = 2 + c = 3 + (Pdb) continue + """ + + +def doctest_pdb_multiline_call_line_tracing(): + """ + Test stepping through a nested function and stopping on a multiline call continuation. + + >>> def test_function(): + ... __author__ = "pi" + ... __version__ = "3.14" + ... + ... def about(): + ... '''About''' + ... print(f"Author: {__author__!r}", + ... f"Version: {__version__!r}", + ... sep=" ") + ... + ... import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace() + ... about() + + >>> with PdbTestInput([ # doctest: +NORMALIZE_WHITESPACE + ... 'step', + ... 'next', + ... 'next', + ... 'continue', + ... ]): + ... test_function() + > (12)test_function() + -> about() + (Pdb) step + --Call-- + > (5)about() + -> def about(): + (Pdb) next + > (7)about() + -> print(f"Author: {__author__!r}", + (Pdb) next + > (8)about() + -> f"Version: {__version__!r}", + (Pdb) continue + Author: 'pi' Version: '3.14' + """ + + if not util.IS_BYTECODE_DSL: def doctest_pdb_locals_generator(): """ diff --git a/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_pdb.txt b/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_pdb.txt index 2076ca186c..ecce5093c1 100644 --- a/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_pdb.txt +++ b/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_pdb.txt @@ -3,7 +3,7 @@ DocTestCase.test.test_pdb.test_list_commands @ darwin-arm64,linux-aarch64,linux- DocTestCase.test.test_pdb.test_next_until_return_at_return_event @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github DocTestCase.test.test_pdb.test_pdb_alias_command @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github DocTestCase.test.test_pdb.test_pdb_ambiguous_statements @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github -# GR-71866 +# Arbitrary jumps in pdb not supported in Bytecode DSL !DocTestCase.test.test_pdb.test_pdb_basic_commands @ darwin-arm64,linux-x86_64,win32-AMD64 DocTestCase.test.test_pdb.test_pdb_breakpoint_commands @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github DocTestCase.test.test_pdb.test_pdb_breakpoint_on_annotated_function_def @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github @@ -17,7 +17,7 @@ DocTestCase.test.test_pdb.test_pdb_issue_43318 @ darwin-arm64,linux-aarch64,linu DocTestCase.test.test_pdb.test_pdb_issue_gh_101673 @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github DocTestCase.test.test_pdb.test_pdb_issue_gh_103225 @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github DocTestCase.test.test_pdb.test_pdb_issue_gh_65052 @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github -# GR-71866 +# Arbitrary jumps in pdb not supported in Bytecode DSL !DocTestCase.test.test_pdb.test_pdb_issue_gh_91742 @ darwin-arm64,linux-aarch64,linux-x86_64,win32-AMD64 DocTestCase.test.test_pdb.test_pdb_next_command_for_generator @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github DocTestCase.test.test_pdb.test_pdb_pp_repr_exc @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github From 639c25cb8ba5d079070224fe604387e31ffb265e Mon Sep 17 00:00:00 2001 From: stepan Date: Thu, 14 May 2026 11:48:04 +0200 Subject: [PATCH 2/3] Enable shutdown threading unittest tag. GR-69282 --- .../src/tests/unittest_tags/test_threading.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_threading.txt b/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_threading.txt index ff4f798b4a..2ebe1b9bce 100644 --- a/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_threading.txt +++ b/graalpython/com.oracle.graal.python.test/src/tests/unittest_tags/test_threading.txt @@ -125,8 +125,7 @@ test.test_threading.SemaphoreTests.test_repr @ darwin-arm64,linux-aarch64,linux- test.test_threading.SemaphoreTests.test_try_acquire @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_threading.SemaphoreTests.test_try_acquire_contended @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_threading.SemaphoreTests.test_with @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github -# Can transiently fail with java.lang.AssertionError: The TruffleContext must be entered -!test.test_threading.ThreadJoinOnShutdown.test_1_join_on_shutdown +test.test_threading.ThreadJoinOnShutdown.test_1_join_on_shutdown @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_threading.ThreadJoinOnShutdown.test_4_daemon_threads @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_threading.ThreadJoinOnShutdown.test_thread_from_thread @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github test.test_threading.ThreadTests.test_BoundedSemaphore_limit @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github From d2767f7bc8432362059ff94a92a415a843466267 Mon Sep 17 00:00:00 2001 From: stepan Date: Tue, 12 May 2026 20:16:56 +0200 Subject: [PATCH 3/3] Use conditional GC wait in memoryio tests. GR-71890 --- graalpython/lib-python/3/test/test_memoryio.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/graalpython/lib-python/3/test/test_memoryio.py b/graalpython/lib-python/3/test/test_memoryio.py index 8b41340bbf..51db9fe3d1 100644 --- a/graalpython/lib-python/3/test/test_memoryio.py +++ b/graalpython/lib-python/3/test/test_memoryio.py @@ -6,7 +6,6 @@ import unittest from test import support -import gc import io import _pyio as pyio import pickle @@ -495,7 +494,7 @@ def test_getbuffer_gc_collect(self): del a # The C implementation emits an unraisable exception. with support.catch_unraisable_exception(): - gc.collect() + support.gc_collect(lambda: memiowr() is not None or bufwr() is not None) self.assertIsNone(memiowr()) self.assertIsNone(bufwr())