"""
Test lldb-dap stack trace response
"""
import dap_server
from lldbsuite.test.decorators import *
import lldbdap_testcase
from lldbsuite.test.lldbtest import *
class TestDAP_subtleFrames(lldbdap_testcase.DAPTestCaseBase):
@add_test_categories(["libc++"])
def test_subtleFrames(self):
"""
Internal stack frames (such as the ones used by `std::function`) are marked as "subtle".
"""
program = self.getBuildArtifact("a.out")
self.build_and_launch(program)
source = "main.cpp"
self.set_source_breakpoints(source, [line_number(source, "BREAK HERE")])
self.continue_to_next_stop()
frames = self.get_stackFrames()
for f in frames:
if "__function" in f["name"]:
self.assertEqual(f["presentationHint"], "subtle")
self.assertTrue(any(f.get("presentationHint") == "subtle" for f in frames))