diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/lang/objc/blocks')
| -rw-r--r-- | packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py | 133 | 
1 files changed, 82 insertions, 51 deletions
diff --git a/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py b/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py index 9fa03071c598..74e4f3bc880d 100644 --- a/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py +++ b/packages/Python/lldbsuite/test/lang/objc/blocks/TestObjCIvarsInBlocks.py @@ -3,13 +3,14 @@  from __future__ import print_function - -import os, time +import os +import time  import lldb  from lldbsuite.test.decorators import *  from lldbsuite.test.lldbtest import *  from lldbsuite.test import lldbutil +  class TestObjCIvarsInBlocks(TestBase):      mydir = TestBase.compute_mydir(__file__) @@ -24,7 +25,9 @@ class TestObjCIvarsInBlocks(TestBase):      @skipUnlessDarwin      @add_test_categories(['pyapi']) -    @expectedFailureAll(archs=["i[3-6]86"], bugnumber="This test requires the 2.0 runtime, so it will fail on i386") +    @expectedFailureAll( +        archs=["i[3-6]86"], +        bugnumber="This test requires the 2.0 runtime, so it will fail on i386")      def test_with_python_api(self):          """Test printing the ivars of the self when captured in blocks"""          self.build() @@ -33,72 +36,100 @@ class TestObjCIvarsInBlocks(TestBase):          target = self.dbg.CreateTarget(exe)          self.assertTrue(target, VALID_TARGET) -        breakpoint = target.BreakpointCreateBySourceRegex ('// Break here inside the block.', self.class_source_file_spec) +        breakpoint = target.BreakpointCreateBySourceRegex( +            '// Break here inside the block.', self.class_source_file_spec)          self.assertTrue(breakpoint, VALID_BREAKPOINT) -        breakpoint_two = target.BreakpointCreateBySourceRegex ('// Break here inside the class method block.', self.class_source_file_spec) +        breakpoint_two = target.BreakpointCreateBySourceRegex( +            '// Break here inside the class method block.', self.class_source_file_spec)          self.assertTrue(breakpoint, VALID_BREAKPOINT) -        process = target.LaunchSimple (None, None, self.get_process_working_directory()) -        self.assertTrue (process, "Created a process.") -        self.assertTrue (process.GetState() == lldb.eStateStopped, "Stopped it too.") +        process = target.LaunchSimple( +            None, None, self.get_process_working_directory()) +        self.assertTrue(process, "Created a process.") +        self.assertTrue( +            process.GetState() == lldb.eStateStopped, +            "Stopped it too.") -        thread_list = lldbutil.get_threads_stopped_at_breakpoint (process, breakpoint) -        self.assertTrue (len(thread_list) == 1) +        thread_list = lldbutil.get_threads_stopped_at_breakpoint( +            process, breakpoint) +        self.assertTrue(len(thread_list) == 1)          thread = thread_list[0] -         +          frame = thread.GetFrameAtIndex(0) -        self.assertTrue (frame, "frame 0 is valid") -         -        # First use the FindVariable API to see if we can find the ivar by undecorated name: -        direct_blocky = frame.GetValueForVariablePath ("blocky_ivar") +        self.assertTrue(frame, "frame 0 is valid") + +        # First use the FindVariable API to see if we can find the ivar by +        # undecorated name: +        direct_blocky = frame.GetValueForVariablePath("blocky_ivar")          self.assertTrue(direct_blocky, "Found direct access to blocky_ivar.") -         -        # Now get it as a member of "self" and make sure the two values are equal: -        self_var = frame.GetValueForVariablePath ("self") -        self.assertTrue (self_var, "Found self in block.") -        indirect_blocky = self_var.GetChildMemberWithName ("blocky_ivar") -        self.assertTrue (indirect_blocky, "Found blocky_ivar through self") -         + +        # Now get it as a member of "self" and make sure the two values are +        # equal: +        self_var = frame.GetValueForVariablePath("self") +        self.assertTrue(self_var, "Found self in block.") +        indirect_blocky = self_var.GetChildMemberWithName("blocky_ivar") +        self.assertTrue(indirect_blocky, "Found blocky_ivar through self") +          error = lldb.SBError()          direct_value = direct_blocky.GetValueAsSigned(error) -        self.assertTrue (error.Success(), "Got direct value for blocky_ivar") +        self.assertTrue(error.Success(), "Got direct value for blocky_ivar") + +        indirect_value = indirect_blocky.GetValueAsSigned(error) +        self.assertTrue(error.Success(), "Got indirect value for blocky_ivar") -        indirect_value = indirect_blocky.GetValueAsSigned (error) -        self.assertTrue (error.Success(), "Got indirect value for blocky_ivar") -         -        self.assertTrue (direct_value == indirect_value, "Direct and indirect values are equal.") +        self.assertTrue( +            direct_value == indirect_value, +            "Direct and indirect values are equal.")          # Now make sure that we can get at the captured ivar through the expression parser. -        # Doing a little trivial math will force this into the real expression parser: -        direct_expr = frame.EvaluateExpression ("blocky_ivar + 10") -        self.assertTrue (direct_expr, "Got blocky_ivar through the expression parser") -         -        # Again, get the value through self directly and make sure they are the same: -        indirect_expr = frame.EvaluateExpression ("self->blocky_ivar + 10") -        self.assertTrue (indirect_expr, "Got blocky ivar through expression parser using self.") -         -        direct_value = direct_expr.GetValueAsSigned (error) -        self.assertTrue (error.Success(), "Got value from direct use of expression parser") - -        indirect_value = indirect_expr.GetValueAsSigned (error) -        self.assertTrue (error.Success(), "Got value from indirect access using the expression parser") - -        self.assertTrue (direct_value == indirect_value, "Direct ivar access and indirect through expression parser produce same value.") +        # Doing a little trivial math will force this into the real expression +        # parser: +        direct_expr = frame.EvaluateExpression("blocky_ivar + 10") +        self.assertTrue( +            direct_expr, +            "Got blocky_ivar through the expression parser") + +        # Again, get the value through self directly and make sure they are the +        # same: +        indirect_expr = frame.EvaluateExpression("self->blocky_ivar + 10") +        self.assertTrue( +            indirect_expr, +            "Got blocky ivar through expression parser using self.") + +        direct_value = direct_expr.GetValueAsSigned(error) +        self.assertTrue( +            error.Success(), +            "Got value from direct use of expression parser") + +        indirect_value = indirect_expr.GetValueAsSigned(error) +        self.assertTrue( +            error.Success(), +            "Got value from indirect access using the expression parser") + +        self.assertTrue( +            direct_value == indirect_value, +            "Direct ivar access and indirect through expression parser produce same value.")          process.Continue() -        self.assertTrue (process.GetState() == lldb.eStateStopped, "Stopped at the second breakpoint.") +        self.assertTrue( +            process.GetState() == lldb.eStateStopped, +            "Stopped at the second breakpoint.") -        thread_list = lldbutil.get_threads_stopped_at_breakpoint (process, breakpoint_two) -        self.assertTrue (len(thread_list) == 1) +        thread_list = lldbutil.get_threads_stopped_at_breakpoint( +            process, breakpoint_two) +        self.assertTrue(len(thread_list) == 1)          thread = thread_list[0] -         +          frame = thread.GetFrameAtIndex(0) -        self.assertTrue (frame, "frame 0 is valid") -         +        self.assertTrue(frame, "frame 0 is valid") +          expr = frame.EvaluateExpression("(ret)") -        self.assertTrue (expr, "Successfully got a local variable in a block in a class method.") +        self.assertTrue( +            expr, "Successfully got a local variable in a block in a class method.") -        ret_value_signed = expr.GetValueAsSigned (error) +        ret_value_signed = expr.GetValueAsSigned(error)          # print('ret_value_signed = %i' % (ret_value_signed)) -        self.assertTrue (ret_value_signed == 5, "The local variable in the block was what we expected.") +        self.assertTrue( +            ret_value_signed == 5, +            "The local variable in the block was what we expected.")  | 
