Per this RFC: https://discourse.llvm.org/t/rfc-improve-lldb-progress-reporting/75717 on improving progress reports, this commit separates the title field and details field so that the title specifies the category that the progress report falls under. The details field is added as a part of the constructor for progress reports and by default is an empty string. In addition, changes the total amount of progress completed into a std::optional. Also updates the test to check for details being correctly reported from the event structured data dictionary.
44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
"""
|
|
Test that we are able to broadcast and receive progress events from lldb
|
|
"""
|
|
import lldb
|
|
|
|
import lldbsuite.test.lldbutil as lldbutil
|
|
|
|
from lldbsuite.test.lldbtest import *
|
|
|
|
|
|
class TestProgressReporting(TestBase):
|
|
def setUp(self):
|
|
TestBase.setUp(self)
|
|
self.broadcaster = self.dbg.GetBroadcaster()
|
|
self.listener = lldbutil.start_listening_from(
|
|
self.broadcaster, lldb.SBDebugger.eBroadcastBitProgress
|
|
)
|
|
|
|
def test_dwarf_symbol_loading_progress_report(self):
|
|
"""Test that we are able to fetch dwarf symbol loading progress events"""
|
|
self.build()
|
|
|
|
lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.c"))
|
|
|
|
event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster)
|
|
ret_args = lldb.SBDebugger.GetProgressFromEvent(event)
|
|
self.assertGreater(len(ret_args), 0)
|
|
message = ret_args[0]
|
|
self.assertGreater(len(message), 0)
|
|
|
|
def test_dwarf_symbol_loading_progress_report_structured_data(self):
|
|
"""Test that we are able to fetch dwarf symbol loading progress events
|
|
using the structured data API"""
|
|
self.build()
|
|
|
|
lldbutil.run_to_source_breakpoint(self, "break here", lldb.SBFileSpec("main.c"))
|
|
|
|
event = lldbutil.fetch_next_event(self, self.listener, self.broadcaster)
|
|
progress_data = lldb.SBDebugger.GetProgressDataFromEvent(event)
|
|
message = progress_data.GetValueForKey("message").GetStringValue(100)
|
|
self.assertGreater(len(message), 0)
|
|
details = progress_data.GetValueForKey("details").GetStringValue(100)
|
|
self.assertGreater(len(details), 0)
|