summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode
diff options
context:
space:
mode:
authorSerhiy Redko <serhiy.redko@oculus.com>2019-12-07 20:11:35 -0800
committerNathan Lanza <nathan@lanza.io>2019-12-09 10:43:50 -0800
commit6dad5e441db5400a9716fd3c6f943ceeeecdfe4e (patch)
tree1bb6c034b712ca90d2177ce11458e2d9cd0bc290 /lldb/packages/Python/lldbsuite/test/tools/lldb-vscode
parentd0ccd55151f52992912dbc12d04a027cf5e06d2f (diff)
downloadbcm5719-llvm-6dad5e441db5400a9716fd3c6f943ceeeecdfe4e.tar.gz
bcm5719-llvm-6dad5e441db5400a9716fd3c6f943ceeeecdfe4e.zip
The field ‘totalFrames’ which is total number of frames available, is mandatory in StackTraces response for VSCode extension that implements DAP and declares capability 'supportsDelayedStackTraceLoading':
"The debug adapter supports the delayed loading of parts of the stack, which requires that both the 'startFrame' and 'levels' arguments and the 'totalFrames' result of the 'StackTrace' request are supported." Lack of this field makes VSCode incorrectly display stack traces information D71034
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/tools/lldb-vscode')
-rw-r--r--lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py22
-rw-r--r--lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/stackTrace/TestVSCode_stackTrace.py12
2 files changed, 27 insertions, 7 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
index b0f69b283fd..9f8047d84d9 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/lldbvscode_testcase.py
@@ -132,15 +132,29 @@ class VSCodeTestCaseBase(TestBase):
key, key_path, d))
return value
- def get_stackFrames(self, threadId=None, startFrame=None, levels=None,
- dump=False):
+ def get_stackFrames_and_totalFramesCount(self, threadId=None, startFrame=None,
+ levels=None, dump=False):
response = self.vscode.request_stackTrace(threadId=threadId,
startFrame=startFrame,
levels=levels,
dump=dump)
if response:
- return self.get_dict_value(response, ['body', 'stackFrames'])
- return None
+ stackFrames = self.get_dict_value(response, ['body', 'stackFrames'])
+ totalFrames = self.get_dict_value(response, ['body', 'totalFrames'])
+ self.assertTrue(totalFrames > 0,
+ 'verify totalFrames count is provided by extension that supports '
+ 'async frames loading')
+ return (stackFrames, totalFrames)
+ return (None, 0)
+
+ def get_stackFrames(self, threadId=None, startFrame=None, levels=None,
+ dump=False):
+ (stackFrames, totalFrames) = self.get_stackFrames_and_totalFramesCount(
+ threadId=threadId,
+ startFrame=startFrame,
+ levels=levels,
+ dump=dump)
+ return stackFrames
def get_source_and_line(self, threadId=None, frameIndex=0):
stackFrames = self.get_stackFrames(threadId=threadId,
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/stackTrace/TestVSCode_stackTrace.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/stackTrace/TestVSCode_stackTrace.py
index 4aca14fc827..723c09e5ba4 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/stackTrace/TestVSCode_stackTrace.py
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-vscode/stackTrace/TestVSCode_stackTrace.py
@@ -76,10 +76,12 @@ class TestVSCode_stackTrace(lldbvscode_testcase.VSCodeTestCaseBase):
self.continue_to_breakpoints(breakpoint_ids)
startFrame = 0
# Verify we get all stack frames with no arguments
- stackFrames = self.get_stackFrames()
+ (stackFrames, totalFrames) = self.get_stackFrames_and_totalFramesCount()
frameCount = len(stackFrames)
self.assertTrue(frameCount >= 20,
'verify we get at least 20 frames for all frames')
+ self.assertTrue(totalFrames == frameCount,
+ 'verify we get correct value for totalFrames count')
self.verify_stackFrames(startFrame, stackFrames)
# Verify all stack frames by specifying startFrame = 0 and levels not
@@ -133,11 +135,15 @@ class TestVSCode_stackTrace(lldbvscode_testcase.VSCodeTestCaseBase):
# Verify we cap things correctly when we ask for too many frames
startFrame = 5
levels = 1000
- stackFrames = self.get_stackFrames(startFrame=startFrame,
- levels=levels)
+ (stackFrames, totalFrames) = self.get_stackFrames_and_totalFramesCount(
+ startFrame=startFrame,
+ levels=levels)
self.assertTrue(len(stackFrames) == frameCount - startFrame,
('verify less than 1000 frames with startFrame=%i and'
' levels=%i') % (startFrame, levels))
+ self.assertTrue(totalFrames == frameCount,
+ 'verify we get correct value for totalFrames count '
+ 'when requested frames not from 0 index')
self.verify_stackFrames(startFrame, stackFrames)
# Verify level=0 works with non-zerp start frame
OpenPOWER on IntegriCloud