llvm-project/lldb/test/API/macosx/dsym_modules/TestdSYMModuleInit.py
Austin Jiang e6cdfb75ac
Fix typos and spelling errors across codebase (#156270)
Corrected various spelling mistakes such as 'occurred', 'receiver',
'initialized', 'length', and others in comments, variable names,
function names, and documentation throughout the project. These
changes improve code readability and maintain consistency in naming
and documentation.

Co-authored-by: Louis Dionne <ldionne.2@gmail.com>
2026-01-13 11:52:46 -05:00

64 lines
2.4 KiB
Python

"""
Test that we read in the Python module from a dSYM, and run the
init in debugger and the init in target routines.
"""
import os, shutil
import lldb
import lldbsuite.test.lldbutil as lldbutil
from lldbsuite.test.lldbtest import *
from lldbsuite.test.decorators import *
@skipUnlessDarwin
class TestdSYMModuleInit(TestBase):
@no_debug_info_test
def test_add_module(self):
"""This loads a file into a target and ensures that the python module was
correctly added and the two initialization functions are called."""
self.exe_name = "has_dsym"
self.py_name = self.exe_name + ".py"
# Now load the target the first time into the debugger:
self.runCmd("settings set target.load-script-from-symbol-file true")
self.interp = self.dbg.GetCommandInterpreter()
executable = self.build_dsym(self.exe_name + "_1")
target = self.createTestTarget(file_path=executable)
self.check_answers(executable, ["1", "1", "has_dsym_1"])
# Now make a second target and make sure both get called:
executable_2 = self.build_dsym(self.exe_name + "_2")
target_2 = self.createTestTarget(file_path=executable_2)
self.check_answers(executable_2, ["2", "2", "has_dsym_2"])
def check_answers(self, name, answers):
result = lldb.SBCommandReturnObject()
self.interp.HandleCommand("report_command", result)
self.assertTrue(
result.Succeeded(), f"report_command succeeded {result.GetError()}"
)
cmd_results = result.GetOutput().split()
self.assertEqual(answers[0], cmd_results[0], "Right number of module imports")
self.assertEqual(answers[1], cmd_results[1], "Right number of target notices")
self.assertIn(answers[2], name, "Right target name")
def build_dsym(self, name):
self.build(debug_info="dsym", dictionary={"EXE": name})
executable = self.getBuildArtifact(name)
dsym_path = self.getBuildArtifact(name + ".dSYM")
python_dir_path = dsym_path
python_dir_path = os.path.join(dsym_path, "Contents", "Resources", "Python")
if not os.path.exists(python_dir_path):
os.mkdir(python_dir_path)
python_file_name = name + ".py"
module_dest_path = os.path.join(python_dir_path, python_file_name)
module_origin_path = os.path.join(self.getSourceDir(), self.py_name)
shutil.copy(module_origin_path, module_dest_path)
return executable