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,
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
# 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
break;
stackFrames.emplace_back(CreateStackFrame(frame));
}
+ const auto totalFrames = thread.GetNumFrames();
+ body.try_emplace("totalFrames", totalFrames);
}
body.try_emplace("stackFrames", std::move(stackFrames));
response.try_emplace("body", std::move(body));