Add tests for diagnostic commands
This commit is contained in:
parent
0d476a0164
commit
414782bc74
@ -267,10 +267,12 @@ class Response_Detection_test( object ):
|
|||||||
# GoToResponse_QuickFix_test, so here we just check that the right call is
|
# GoToResponse_QuickFix_test, so here we just check that the right call is
|
||||||
# made
|
# made
|
||||||
with patch( 'ycm.vimsupport.SetQuickFixList' ) as set_qf_list:
|
with patch( 'ycm.vimsupport.SetQuickFixList' ) as set_qf_list:
|
||||||
request = CommandRequest( [ command ] )
|
with patch( 'ycm.vimsupport.OpenQuickFixList' ) as open_qf_list:
|
||||||
request._response = response
|
request = CommandRequest( [ command ] )
|
||||||
request.RunPostCommandActionsIfNeeded()
|
request._response = response
|
||||||
ok_( set_qf_list.called )
|
request.RunPostCommandActionsIfNeeded()
|
||||||
|
ok_( set_qf_list.called )
|
||||||
|
ok_( open_qf_list.called )
|
||||||
|
|
||||||
basic_goto = {
|
basic_goto = {
|
||||||
'filepath': 'test',
|
'filepath': 'test',
|
||||||
|
@ -27,7 +27,8 @@ from builtins import * # noqa
|
|||||||
|
|
||||||
from ycm.tests import PathToTestFile
|
from ycm.tests import PathToTestFile
|
||||||
from ycm.tests.test_utils import ( CurrentWorkingDirectory, ExtendedMock,
|
from ycm.tests.test_utils import ( CurrentWorkingDirectory, ExtendedMock,
|
||||||
MockVimCommand, MockVimModule, VimBuffer )
|
MockVimBuffers, MockVimCommand,
|
||||||
|
MockVimModule, VimBuffer )
|
||||||
MockVimModule()
|
MockVimModule()
|
||||||
|
|
||||||
from ycm import vimsupport
|
from ycm import vimsupport
|
||||||
@ -39,6 +40,47 @@ import os
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
@patch( 'vim.eval', new_callable = ExtendedMock )
|
||||||
|
def SetLocationList_test( vim_eval ):
|
||||||
|
diagnostics = [ {
|
||||||
|
'bufnr': 3,
|
||||||
|
'filename': 'some_filename',
|
||||||
|
'lnum': 5,
|
||||||
|
'col': 22,
|
||||||
|
'type': 'E',
|
||||||
|
'valid': 1
|
||||||
|
} ]
|
||||||
|
vimsupport.SetLocationList( diagnostics )
|
||||||
|
vim_eval.assert_called_once_with(
|
||||||
|
'setloclist( 0, {0} )'.format( json.dumps( diagnostics ) ) )
|
||||||
|
|
||||||
|
|
||||||
|
@patch( 'ycm.vimsupport.VariableExists', return_value = True )
|
||||||
|
@patch( 'ycm.vimsupport.SetFittingHeightForCurrentWindow' )
|
||||||
|
@patch( 'vim.command', new_callable = ExtendedMock )
|
||||||
|
def OpenLocationList_test( vim_command, fitting_height, variable_exists ):
|
||||||
|
vimsupport.OpenLocationList( focus = False, autoclose = True )
|
||||||
|
vim_command.assert_has_exact_calls( [
|
||||||
|
call( 'botright lopen' ),
|
||||||
|
call( 'au WinLeave <buffer> q' ),
|
||||||
|
call( 'doautocmd User YcmLocationOpened' ),
|
||||||
|
call( 'silent! wincmd p' )
|
||||||
|
] )
|
||||||
|
fitting_height.assert_called_once_with()
|
||||||
|
variable_exists.assert_called_once_with( '#User#YcmLocationOpened' )
|
||||||
|
|
||||||
|
|
||||||
|
@patch( 'ycm.vimsupport.GetIntValue', return_value = 120 )
|
||||||
|
@patch( 'vim.command' )
|
||||||
|
def SetFittingHeightForCurrentWindow_test( vim_command, *args ):
|
||||||
|
# Create a buffer with one line that is longer than the window width.
|
||||||
|
current_buffer = VimBuffer( 'buffer',
|
||||||
|
contents = [ 'a' * 140 ] )
|
||||||
|
with MockVimBuffers( [ current_buffer ], current_buffer ):
|
||||||
|
vimsupport.SetFittingHeightForCurrentWindow()
|
||||||
|
vim_command.assert_called_once_with( '2wincmd _' )
|
||||||
|
|
||||||
|
|
||||||
def AssertBuffersAreEqualAsBytes( result_buffer, expected_buffer ):
|
def AssertBuffersAreEqualAsBytes( result_buffer, expected_buffer ):
|
||||||
eq_( len( result_buffer ), len( expected_buffer ) )
|
eq_( len( result_buffer ), len( expected_buffer ) )
|
||||||
for result_line, expected_line in zip( result_buffer, expected_buffer ):
|
for result_line, expected_line in zip( result_buffer, expected_buffer ):
|
||||||
|
@ -295,3 +295,122 @@ def YouCompleteMe_ShowDetailedDiagnostic_MessageFromServer_test(
|
|||||||
post_vim_message.assert_has_exact_calls( [
|
post_vim_message.assert_has_exact_calls( [
|
||||||
call( 'some_detailed_diagnostic', warning = False )
|
call( 'some_detailed_diagnostic', warning = False )
|
||||||
] )
|
] )
|
||||||
|
|
||||||
|
|
||||||
|
@YouCompleteMeInstance()
|
||||||
|
@patch( 'ycm.vimsupport.PostVimMessage', new_callable = ExtendedMock )
|
||||||
|
def YouCompleteMe_ShowDiagnostics_FiletypeNotSupported_test( ycm,
|
||||||
|
post_vim_message ):
|
||||||
|
|
||||||
|
current_buffer = VimBuffer( 'buffer', filetype = 'not_supported' )
|
||||||
|
with MockVimBuffers( [ current_buffer ], current_buffer ):
|
||||||
|
ycm.ShowDiagnostics()
|
||||||
|
|
||||||
|
post_vim_message.assert_called_once_with(
|
||||||
|
'Native filetype completion not supported for current file, '
|
||||||
|
'cannot force recompilation.', warning = False )
|
||||||
|
|
||||||
|
|
||||||
|
@YouCompleteMeInstance()
|
||||||
|
@patch( 'ycm.youcompleteme.YouCompleteMe.FiletypeCompleterExistsForFiletype',
|
||||||
|
return_value = True )
|
||||||
|
@patch( 'ycm.vimsupport.PostVimMessage', new_callable = ExtendedMock )
|
||||||
|
@patch( 'ycm.vimsupport.SetLocationList', new_callable = ExtendedMock )
|
||||||
|
def YouCompleteMe_ShowDiagnostics_NoDiagnosticsDetected_test(
|
||||||
|
ycm, set_location_list, post_vim_message, *args ):
|
||||||
|
|
||||||
|
current_buffer = VimBuffer( 'buffer', filetype = 'cpp' )
|
||||||
|
with MockVimBuffers( [ current_buffer ], current_buffer ):
|
||||||
|
with patch( 'ycm.client.event_notification.EventNotification.Response',
|
||||||
|
return_value = {} ):
|
||||||
|
ycm.ShowDiagnostics()
|
||||||
|
|
||||||
|
post_vim_message.assert_has_exact_calls( [
|
||||||
|
call( 'Forcing compilation, this will block Vim until done.',
|
||||||
|
warning = False ),
|
||||||
|
call( 'Diagnostics refreshed', warning = False ),
|
||||||
|
call( 'No warnings or errors detected.', warning = False )
|
||||||
|
] )
|
||||||
|
set_location_list.assert_called_once_with( [] )
|
||||||
|
|
||||||
|
|
||||||
|
@YouCompleteMeInstance( { 'log_level': 'debug',
|
||||||
|
'keep_logfiles': 1,
|
||||||
|
'open_loclist_on_ycm_diags': 0 } )
|
||||||
|
@patch( 'ycm.youcompleteme.YouCompleteMe.FiletypeCompleterExistsForFiletype',
|
||||||
|
return_value = True )
|
||||||
|
@patch( 'ycm.vimsupport.PostVimMessage', new_callable = ExtendedMock )
|
||||||
|
@patch( 'ycm.vimsupport.SetLocationList', new_callable = ExtendedMock )
|
||||||
|
def YouCompleteMe_ShowDiagnostics_DiagnosticsFound_DoNotOpenLocationList_test(
|
||||||
|
ycm, set_location_list, post_vim_message, *args ):
|
||||||
|
|
||||||
|
diagnostic = {
|
||||||
|
'kind': 'ERROR',
|
||||||
|
'text': 'error text',
|
||||||
|
'location': {
|
||||||
|
'filepath': 'buffer',
|
||||||
|
'column_num': 2,
|
||||||
|
'line_num': 19
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
current_buffer = VimBuffer( 'buffer', filetype = 'cpp', number = 3 )
|
||||||
|
with MockVimBuffers( [ current_buffer ], current_buffer ):
|
||||||
|
with patch( 'ycm.client.event_notification.EventNotification.Response',
|
||||||
|
return_value = [ diagnostic ] ):
|
||||||
|
ycm.ShowDiagnostics()
|
||||||
|
|
||||||
|
post_vim_message.assert_has_exact_calls( [
|
||||||
|
call( 'Forcing compilation, this will block Vim until done.',
|
||||||
|
warning = False ),
|
||||||
|
call( 'Diagnostics refreshed', warning = False )
|
||||||
|
] )
|
||||||
|
set_location_list.assert_called_once_with( [ {
|
||||||
|
'bufnr': 3,
|
||||||
|
'lnum': 19,
|
||||||
|
'col': 2,
|
||||||
|
'text': 'error text',
|
||||||
|
'type': 'E',
|
||||||
|
'valid': 1
|
||||||
|
} ] )
|
||||||
|
|
||||||
|
|
||||||
|
@YouCompleteMeInstance( { 'open_loclist_on_ycm_diags': 1 } )
|
||||||
|
@patch( 'ycm.youcompleteme.YouCompleteMe.FiletypeCompleterExistsForFiletype',
|
||||||
|
return_value = True )
|
||||||
|
@patch( 'ycm.vimsupport.PostVimMessage', new_callable = ExtendedMock )
|
||||||
|
@patch( 'ycm.vimsupport.SetLocationList', new_callable = ExtendedMock )
|
||||||
|
@patch( 'ycm.vimsupport.OpenLocationList', new_callable = ExtendedMock )
|
||||||
|
def YouCompleteMe_ShowDiagnostics_DiagnosticsFound_OpenLocationList_test(
|
||||||
|
ycm, open_location_list, set_location_list, post_vim_message, *args ):
|
||||||
|
|
||||||
|
diagnostic = {
|
||||||
|
'kind': 'ERROR',
|
||||||
|
'text': 'error text',
|
||||||
|
'location': {
|
||||||
|
'filepath': 'buffer',
|
||||||
|
'column_num': 2,
|
||||||
|
'line_num': 19
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
current_buffer = VimBuffer( 'buffer', filetype = 'cpp', number = 3 )
|
||||||
|
with MockVimBuffers( [ current_buffer ], current_buffer ):
|
||||||
|
with patch( 'ycm.client.event_notification.EventNotification.Response',
|
||||||
|
return_value = [ diagnostic ] ):
|
||||||
|
ycm.ShowDiagnostics()
|
||||||
|
|
||||||
|
post_vim_message.assert_has_exact_calls( [
|
||||||
|
call( 'Forcing compilation, this will block Vim until done.',
|
||||||
|
warning = False ),
|
||||||
|
call( 'Diagnostics refreshed', warning = False )
|
||||||
|
] )
|
||||||
|
set_location_list.assert_called_once_with( [ {
|
||||||
|
'bufnr': 3,
|
||||||
|
'lnum': 19,
|
||||||
|
'col': 2,
|
||||||
|
'text': 'error text',
|
||||||
|
'type': 'E',
|
||||||
|
'valid': 1
|
||||||
|
} ] )
|
||||||
|
open_location_list.assert_called_once_with( focus = True )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user