146c1f77eSJeffrey Tan""" 246c1f77eSJeffrey TanTest lldb-vscode variables/stackTrace request for optimized code 346c1f77eSJeffrey Tan""" 446c1f77eSJeffrey Tan 546c1f77eSJeffrey Tanfrom __future__ import print_function 646c1f77eSJeffrey Tan 746c1f77eSJeffrey Tanimport unittest2 846c1f77eSJeffrey Tanimport vscode 946c1f77eSJeffrey Tanfrom lldbsuite.test.decorators import * 1046c1f77eSJeffrey Tanfrom lldbsuite.test.lldbtest import * 1146c1f77eSJeffrey Tanfrom lldbsuite.test import lldbutil 1246c1f77eSJeffrey Tanimport lldbvscode_testcase 1346c1f77eSJeffrey Tan 1446c1f77eSJeffrey Tan 1546c1f77eSJeffrey Tanclass TestVSCode_optimized(lldbvscode_testcase.VSCodeTestCaseBase): 1646c1f77eSJeffrey Tan 1746c1f77eSJeffrey Tan @skipIfWindows 1846c1f77eSJeffrey Tan @skipIfRemote 1946c1f77eSJeffrey Tan def test_stack_frame_name(self): 2046c1f77eSJeffrey Tan ''' Test optimized frame has special name suffix. 2146c1f77eSJeffrey Tan ''' 2246c1f77eSJeffrey Tan program = self.getBuildArtifact("a.out") 2346c1f77eSJeffrey Tan self.build_and_launch(program) 2446c1f77eSJeffrey Tan source = 'main.cpp' 2546c1f77eSJeffrey Tan breakpoint_line = line_number(source, '// breakpoint 1') 2646c1f77eSJeffrey Tan lines = [breakpoint_line] 2746c1f77eSJeffrey Tan breakpoint_ids = self.set_source_breakpoints(source, lines) 2846c1f77eSJeffrey Tan self.assertEqual(len(breakpoint_ids), len(lines), 2946c1f77eSJeffrey Tan "expect correct number of breakpoints") 3046c1f77eSJeffrey Tan self.continue_to_breakpoints(breakpoint_ids) 3146c1f77eSJeffrey Tan leaf_frame = self.vscode.get_stackFrame(frameIndex=0) 3246c1f77eSJeffrey Tan self.assertTrue(leaf_frame['name'].endswith(' [opt]')) 3346c1f77eSJeffrey Tan parent_frame = self.vscode.get_stackFrame(frameIndex=1) 3446c1f77eSJeffrey Tan self.assertTrue(parent_frame['name'].endswith(' [opt]')) 35*0fe220a3SJeffrey Tan 36*0fe220a3SJeffrey Tan @skipIfWindows 37*0fe220a3SJeffrey Tan @skipIfRemote 38*0fe220a3SJeffrey Tan def test_optimized_variable(self): 39*0fe220a3SJeffrey Tan ''' Test optimized variable value contains error. 40*0fe220a3SJeffrey Tan ''' 41*0fe220a3SJeffrey Tan program = self.getBuildArtifact("a.out") 42*0fe220a3SJeffrey Tan self.build_and_launch(program) 43*0fe220a3SJeffrey Tan source = 'main.cpp' 44*0fe220a3SJeffrey Tan breakpoint_line = line_number(source, '// breakpoint 2') 45*0fe220a3SJeffrey Tan lines = [breakpoint_line] 46*0fe220a3SJeffrey Tan # Set breakpoint in the thread function so we can step the threads 47*0fe220a3SJeffrey Tan breakpoint_ids = self.set_source_breakpoints(source, lines) 48*0fe220a3SJeffrey Tan self.assertEqual(len(breakpoint_ids), len(lines), 49*0fe220a3SJeffrey Tan "expect correct number of breakpoints") 50*0fe220a3SJeffrey Tan self.continue_to_breakpoints(breakpoint_ids) 51*0fe220a3SJeffrey Tan optimized_variable = self.vscode.get_local_variable('optimized') 52*0fe220a3SJeffrey Tan 53*0fe220a3SJeffrey Tan self.assertTrue(optimized_variable['value'].startswith('<error:')) 54