Print failure when watch expression errors
This commit is contained in:
parent
8e2d352eb8
commit
2eac9ddff8
2 changed files with 56 additions and 5 deletions
|
|
@ -84,6 +84,12 @@ class WatchResult( Expandable ):
|
||||||
self.result = result
|
self.result = result
|
||||||
|
|
||||||
|
|
||||||
|
class WatchFailure( WatchResult ):
|
||||||
|
def __init__( self, reason ):
|
||||||
|
super().__init__( { 'result': reason } )
|
||||||
|
self.changed = True
|
||||||
|
|
||||||
|
|
||||||
class Variable( Expandable ):
|
class Variable( Expandable ):
|
||||||
"""Holds one level of an expanded value tree. Also itself expandable."""
|
"""Holds one level of an expanded value tree. Also itself expandable."""
|
||||||
def __init__( self, variable: dict ):
|
def __init__( self, variable: dict ):
|
||||||
|
|
@ -296,11 +302,14 @@ class VariablesView( object ):
|
||||||
|
|
||||||
def EvaluateWatches( self ):
|
def EvaluateWatches( self ):
|
||||||
for watch in self._watches:
|
for watch in self._watches:
|
||||||
self._connection.DoRequest( partial( self._UpdateWatchExpression,
|
self._connection.DoRequest(
|
||||||
watch ), {
|
partial( self._UpdateWatchExpression, watch ),
|
||||||
'command': 'evaluate',
|
{
|
||||||
'arguments': watch.expression,
|
'command': 'evaluate',
|
||||||
} )
|
'arguments': watch.expression,
|
||||||
|
},
|
||||||
|
failure_handler = lambda reason, msg, watch=watch:
|
||||||
|
self._WatchExpressionFailed( reason, watch ) )
|
||||||
|
|
||||||
def _UpdateWatchExpression( self, watch: Watch, message: dict ):
|
def _UpdateWatchExpression( self, watch: Watch, message: dict ):
|
||||||
if watch.result is not None:
|
if watch.result is not None:
|
||||||
|
|
@ -321,6 +330,14 @@ class VariablesView( object ):
|
||||||
|
|
||||||
self._DrawWatches()
|
self._DrawWatches()
|
||||||
|
|
||||||
|
def _WatchExpressionFailed( self, reason: str, watch: Watch ):
|
||||||
|
if watch.result is not None:
|
||||||
|
# We already have a result for this watch. Wut ?
|
||||||
|
return
|
||||||
|
|
||||||
|
watch.result = WatchFailure( reason )
|
||||||
|
self._DrawWatches()
|
||||||
|
|
||||||
def ExpandVariable( self ):
|
def ExpandVariable( self ):
|
||||||
if vim.current.buffer == self._vars.buf:
|
if vim.current.buffer == self._vars.buf:
|
||||||
view = self._vars
|
view = self._vars
|
||||||
|
|
|
||||||
|
|
@ -557,3 +557,37 @@ function Test_EvaluatePromptConsole()
|
||||||
call vimspector#test#setup#Reset()
|
call vimspector#test#setup#Reset()
|
||||||
%bwipe!
|
%bwipe!
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! Test_EvaluateFailure()
|
||||||
|
call s:StartDebugging()
|
||||||
|
|
||||||
|
" Add a wtch
|
||||||
|
call vimspector#AddWatch( 'test' )
|
||||||
|
call WaitForAssert( {->
|
||||||
|
\ AssertMatchist(
|
||||||
|
\ [
|
||||||
|
\ 'Watches: ----',
|
||||||
|
\ 'Expression: test',
|
||||||
|
\ " *- Result: NameError: name 'test' is not defined",
|
||||||
|
\ ],
|
||||||
|
\ getbufline( winbufnr( g:vimspector_session_windows.watches ),
|
||||||
|
\ 1,
|
||||||
|
\ '$' )
|
||||||
|
\ )
|
||||||
|
\ } )
|
||||||
|
|
||||||
|
VimspectorEval test
|
||||||
|
call assert_equal( bufnr( 'vimspector.Console' ),
|
||||||
|
\ winbufnr( g:vimspector_session_windows.output ) )
|
||||||
|
call WaitForAssert( {->
|
||||||
|
\ assert_equal(
|
||||||
|
\ [
|
||||||
|
\ "NameError: name 'test' is not defined"
|
||||||
|
\ ],
|
||||||
|
\ getbufline( bufnr( 'vimspector.Console' ), '$', '$' )
|
||||||
|
\ )
|
||||||
|
\ } )
|
||||||
|
|
||||||
|
call vimspector#test#setup#Reset()
|
||||||
|
%bwipe!
|
||||||
|
endfunction
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue