@@ -18,26 +18,40 @@ def tearDown(self):
1818 if self .background_pid :
1919 os .kill (self .background_pid , signal .SIGKILL )
2020
21- def test_getname (self ):
22- """Test the SBModule::GetName() method"""
21+ @skipIfRemote
22+ def test_GetObjectName (self ):
23+ """Test the SBModule::GetObjectName() method"""
2324 self .build ()
24- target , _ , _ , _ = lldbutil .run_to_source_breakpoint (
25- self , "// break here" , lldb .SBFileSpec ("main.c" )
26- )
25+ exe = self .getBuildArtifact ("a.out" )
26+ libfoo_path = self .getBuildArtifact ("libfoo.a" )
27+ target_exe = self .dbg .CreateTarget (exe )
28+ self .assertTrue (target_exe .IsValid (), "Target for a.out is valid" )
29+
30+ # Test that the executable module has no object name (usually the first module in the target)
31+ exe_module = target_exe .GetModuleAtIndex (0 )
32+ self .assertTrue (exe_module .IsValid (), "Executable module is valid" )
33+ self .assertIsNone (exe_module .GetObjectName (), "a.out should have no object name" )
34+
35+ # check archive member names
36+ module_specs = lldb .SBModuleSpecList .GetModuleSpecifications (libfoo_path )
37+ self .assertGreater (module_specs .GetSize (), 0 , "Archive should have at least one module spec" )
38+ target = self .dbg .CreateTarget (None )
39+ self .assertTrue (target .IsValid (), "Target is valid" )
40+ found = set ()
41+ expected = {"a.o" , "b.o" }
42+ for i in range (module_specs .GetSize ()):
43+ spec = module_specs .GetSpecAtIndex (i )
44+ obj_name = spec .GetObjectName ()
45+ self .assertIsInstance (obj_name , str )
46+ self .assertIn (obj_name , expected , f"Unexpected object name: { obj_name } " )
47+ #create a module from the arhive using the sepc
48+ module = target .AddModule (spec )
49+ self .assertTrue (module .IsValid (), "Module is valid" )
50+ self .assertTrue (module .IsValid (), f"Module for { obj_name } is valid" )
51+ self .assertEqual (module .GetObjectName (), obj_name , f"Object name for { obj_name } matches" )
52+ found .add (obj_name )
53+ self .assertEqual (found , expected , "Did not find all expected archive members" )
2754
28- self .assertGreater (target .GetNumModules (), 0 )
29- for i in range (target .GetNumModules ()):
30- module = target .GetModuleAtIndex (i )
31- file_spec = module .GetFileSpec ()
32- name = module .GetName ()
33- if file_spec .IsValid () and file_spec .exists :
34- #If file is valid and file exist, expect GetName() to be None
35- self .assertIsNone (name , f"Expected None for module with valid file { file_spec .GetFilename ()} , got { name !r} " )
36- else :
37- #If no valid file, expect GetName() to be a non - empty string
38- self .assertIsInstance (name , str )
39- self .assertTrue (name , "Expected a non-empty name for module without a valid file" )
40-
4155 @skipUnlessDarwin
4256 @skipIfRemote
4357 def test_module_is_file_backed (self ):
0 commit comments