def test_structured_data_serialization(self): target = self.dbg.GetDummyTarget() self.assertTrue(target.IsValid(), VALID_TARGET) interpreter = self.dbg.GetCommandInterpreter() result = lldb.SBCommandReturnObject() interpreter.HandleCommand("br set -f foo -l 42", result) result = lldb.SBCommandReturnObject() interpreter.HandleCommand("br set -c 'argc == 1' -n main", result) bkp1 = target.GetBreakpointAtIndex(0) self.assertTrue(bkp1.IsValid(), VALID_BREAKPOINT) stream = lldb.SBStream() sd = bkp1.SerializeToStructuredData() sd.GetAsJSON(stream) serialized_data = json.loads(stream.GetData()) self.assertEqual(serialized_data["Breakpoint"]["BKPTResolver"]["Options"]["FileName"], "foo") self.assertEqual(serialized_data["Breakpoint"]["BKPTResolver"]["Options"]["LineNumber"], 42) bkp2 = target.GetBreakpointAtIndex(1) self.assertTrue(bkp2.IsValid(), VALID_BREAKPOINT) stream = lldb.SBStream() sd = bkp2.SerializeToStructuredData() sd.GetAsJSON(stream) serialized_data = json.loads(stream.GetData()) self.assertIn("main", serialized_data["Breakpoint"]["BKPTResolver"]["Options"]["SymbolNames"]) self.assertEqual(serialized_data["Breakpoint"]["BKPTOptions"]["ConditionText"],"argc == 1") invalid_bkp = lldb.SBBreakpoint() self.assertFalse(invalid_bkp.IsValid(), "Breakpoint should not be valid.") stream = lldb.SBStream() sd = invalid_bkp.SerializeToStructuredData() sd.GetAsJSON(stream) self.assertFalse(stream.GetData(), "Invalid breakpoint should have an empty structured data")
def test_SBBreakpoint(self): obj = lldb.SBBreakpoint() if self.TraceOn(): print obj self.assertFalse(obj) # Do fuzz testing on the invalid obj, it should not crash lldb. import sb_breakpoint sb_breakpoint.fuzz_obj(obj)