1""" 2Test lldb-vscode setBreakpoints request 3""" 4 5from __future__ import print_function 6 7import unittest2 8import vscode 9from lldbsuite.test.decorators import * 10from lldbsuite.test.lldbtest import * 11from lldbsuite.test import lldbutil 12import lldbvscode_testcase 13 14 15class TestVSCode_module(lldbvscode_testcase.VSCodeTestCaseBase): 16 17 mydir = TestBase.compute_mydir(__file__) 18 19 def test_modules_event(self): 20 program_basename = "a.out.stripped" 21 program= self.getBuildArtifact(program_basename) 22 self.build_and_launch(program) 23 source = "main.cpp" 24 main_source_path = self.getSourcePath(source) 25 functions = ['main'] 26 breakpoint_ids = self.set_function_breakpoints(functions) 27 self.assertEquals(len(breakpoint_ids), len(functions), 28 'expect one breakpoint') 29 self.continue_to_breakpoints(breakpoint_ids) 30 active_modules = self.vscode.get_active_modules() 31 self.assertIn(program_basename, active_modules, '%s module is in active modules' % (program_basename)) 32 program_module = active_modules[program_basename] 33 self.assertIn('name', program_module, 'make sure name is in module') 34 self.assertEqual(program_basename, program_module['name']) 35 self.assertIn('path', program_module, 'make sure path is in module') 36 self.assertEqual(program, program_module['path']) 37 self.assertTrue('symbolFilePath' not in program_module, 'Make sure a.out.stripped has no debug info') 38 self.assertEqual('Symbols not found.', program_module['symbolStatus']) 39 symbol_path = self.getBuildArtifact("a.out") 40 response = self.vscode.request_evaluate('`%s' % ('target symbols add -s "%s" "%s"' % (program, symbol_path))) 41 active_modules = self.vscode.get_active_modules() 42 program_module = active_modules[program_basename] 43 self.assertEqual(program_basename, program_module['name']) 44 self.assertEqual(program, program_module['path']) 45 self.assertEqual('Symbols loaded.', program_module['symbolStatus']) 46 self.assertIn('symbolFilePath', program_module) 47 self.assertEqual(symbol_path, program_module['symbolFilePath']) 48 self.assertIn('addressRange', program_module) 49 50 def test_compile_units(self): 51 program= self.getBuildArtifact("a.out") 52 self.build_and_launch(program) 53 source = "main.cpp" 54 main_source_path = self.getSourcePath(source) 55 breakpoint1_line = line_number(source, '// breakpoint 1') 56 lines = [breakpoint1_line] 57 breakpoint_ids = self.set_source_breakpoints(source, lines) 58 self.continue_to_breakpoints(breakpoint_ids) 59 moduleId = self.vscode.get_active_modules()['a.out']['id'] 60 response = self.vscode.request_getCompileUnits(moduleId) 61 print(response['body']) 62 self.assertTrue(response['body']) 63 self.assertTrue(len(response['body']['compileUnits']) == 1, 64 'Only one source file should exist') 65 self.assertTrue(response['body']['compileUnits'][0]['compileUnitPath'] == main_source_path, 66 'Real path to main.cpp matches') 67