@@ -18,26 +18,40 @@ def tearDown(self):
18
18
if self .background_pid :
19
19
os .kill (self .background_pid , signal .SIGKILL )
20
20
21
- def test_getname (self ):
22
- """Test the SBModule::GetName() method"""
21
+ @skipIfRemote
22
+ def test_GetObjectName (self ):
23
+ """Test the SBModule::GetObjectName() method"""
23
24
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" )
27
54
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
-
41
55
@skipUnlessDarwin
42
56
@skipIfRemote
43
57
def test_module_is_file_backed (self ):
0 commit comments