summaryrefslogtreecommitdiff
path: root/lldb/test/API/tools/lldb-dap/stackTrace/subtleFrames/TestDAP_subtleFrames.py
blob: 1e41e841e39bc88de9da480f4ec8bc65d380ce36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
"""
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))