[3.14] gh-136438: Make sure test_remote_pdb pass with all optimization levels (GH-136788) (GH-136855)

(cherry picked from commit 588d9fb84a)
This commit is contained in:
Olga Pustovalova 2025-07-20 13:51:59 +02:00 committed by GitHub
parent 2cb3b534e7
commit 0e909267f6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,5 +1,4 @@
import io
import time
import itertools
import json
import os
@ -8,16 +7,13 @@
import socket
import subprocess
import sys
import tempfile
import textwrap
import threading
import unittest
import unittest.mock
from contextlib import closing, contextmanager, redirect_stdout, redirect_stderr, ExitStack
from pathlib import Path
from test.support import is_wasi, cpython_only, force_color, requires_subprocess, SHORT_TIMEOUT
from test.support.os_helper import temp_dir, TESTFN, unlink
from typing import Dict, List, Optional, Tuple, Union, Any
from test.support import is_wasi, cpython_only, force_color, requires_subprocess, SHORT_TIMEOUT, subTests
from test.support.os_helper import TESTFN, unlink
from typing import List
import pdb
from pdb import _PdbServer, _PdbClient
@ -283,37 +279,50 @@ def test_handling_other_message(self):
expected_stdout="Some message.\n",
)
def test_handling_help_for_command(self):
"""Test handling a request to display help for a command."""
@unittest.skipIf(sys.flags.optimize >= 2, "Help not available for -OO")
@subTests(
"help_request,expected_substring",
[
# a request to display help for a command
({"help": "ll"}, "Usage: ll | longlist"),
# a request to display a help overview
({"help": ""}, "type help <topic>"),
# a request to display the full PDB manual
({"help": "pdb"}, ">>> import pdb"),
],
)
def test_handling_help_when_available(self, help_request, expected_substring):
"""Test handling help requests when help is available."""
incoming = [
("server", {"help": "ll"}),
("server", help_request),
]
self.do_test(
incoming=incoming,
expected_outgoing=[],
expected_stdout_substring="Usage: ll | longlist",
expected_stdout_substring=expected_substring,
)
def test_handling_help_without_a_specific_topic(self):
"""Test handling a request to display a help overview."""
@unittest.skipIf(sys.flags.optimize < 2, "Needs -OO")
@subTests(
"help_request,expected_substring",
[
# a request to display help for a command
({"help": "ll"}, "No help for 'll'"),
# a request to display a help overview
({"help": ""}, "Undocumented commands"),
# a request to display the full PDB manual
({"help": "pdb"}, "No help for 'pdb'"),
],
)
def test_handling_help_when_not_available(self, help_request, expected_substring):
"""Test handling help requests when help is not available."""
incoming = [
("server", {"help": ""}),
("server", help_request),
]
self.do_test(
incoming=incoming,
expected_outgoing=[],
expected_stdout_substring="type help <topic>",
)
def test_handling_help_pdb(self):
"""Test handling a request to display the full PDB manual."""
incoming = [
("server", {"help": "pdb"}),
]
self.do_test(
incoming=incoming,
expected_outgoing=[],
expected_stdout_substring=">>> import pdb",
expected_stdout_substring=expected_substring,
)
def test_handling_pdb_prompts(self):
@ -1434,7 +1443,6 @@ def test_multi_line_commands(self):
def _supports_remote_attaching():
from contextlib import suppress
PROCESS_VM_READV_SUPPORTED = False
try: