Files
clang-p2996/lldb/test/API/python_api/sbprogress/TestSBProgress.py
Jacob Lalonde 6b048aeaf8 [LLDB] Add SBProgress so Python scripts can also report progress (#119052)
Recently I've been working on a lot of internal Python tooling, and in
certain cases I want to report async to the script over DAP. Progress.h
already handles this, so I've exposed Progress via the SB API so Python
scripts can also update progress objects.

I actually have no idea how to test this, so I just wrote a [toy command
to test
it](https://gist.github.com/Jlalond/48d85e75a91f7a137e3142e6a13d0947)


![image](https://github.com/user-attachments/assets/7317cbb8-9145-4fdb-bacf-9864bf50c467)

I also copied the first section of the extensive Progress.h class
documentation to the docstrings.
2025-01-17 12:00:31 -08:00

36 lines
1.4 KiB
Python

"""Test the SBProgress API."""
import lldb
from lldbsuite.test.lldbtest import *
class SBProgressTestCase(TestBase):
def test_with_external_bit_set(self):
"""Test SBProgress events are listened to when the external bit is set."""
progress = lldb.SBProgress("Test SBProgress", "Test progress", self.dbg)
listener = lldb.SBListener("Test listener")
broadcaster = self.dbg.GetBroadcaster()
broadcaster.AddListener(listener, lldb.eBroadcastBitExternalProgress)
event = lldb.SBEvent()
expected_string = "Test progress first increment"
progress.Increment(1, expected_string)
self.assertTrue(listener.PeekAtNextEvent(event))
stream = lldb.SBStream()
event.GetDescription(stream)
self.assertIn(expected_string, stream.GetData())
def test_without_external_bit_set(self):
"""Test SBProgress events are not listened to on the internal progress bit."""
progress = lldb.SBProgress("Test SBProgress", "Test progress", self.dbg)
listener = lldb.SBListener("Test listener")
broadcaster = self.dbg.GetBroadcaster()
broadcaster.AddListener(listener, lldb.eBroadcastBitProgress)
event = lldb.SBEvent()
expected_string = "Test progress first increment"
progress.Increment(1, expected_string)
self.assertFalse(listener.PeekAtNextEvent(event))