From ab758e4c641a05a66ad510e6dab36025a75f9728 Mon Sep 17 00:00:00 2001 From: micbou Date: Thu, 19 Jan 2017 01:07:32 +0100 Subject: [PATCH] Include subservers logfiles in YcmToggleLogs --- python/ycm/client/debug_info_request.py | 4 ++-- .../ycm/tests/client/debug_info_request_test.py | 16 ++++++++-------- python/ycm/tests/youcompleteme_test.py | 8 +++++++- python/ycm/youcompleteme.py | 13 +++++++++++-- 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/python/ycm/client/debug_info_request.py b/python/ycm/client/debug_info_request.py index b908937d..d7a5822b 100644 --- a/python/ycm/client/debug_info_request.py +++ b/python/ycm/client/debug_info_request.py @@ -40,10 +40,10 @@ class DebugInfoRequest( BaseRequest ): def Response( self ): - return _FormatDebugInfoResponse( self._response ) + return self._response -def _FormatDebugInfoResponse( response ): +def FormatDebugInfoResponse( response ): if not response: return 'Server errored, no debug info from server\n' message = _FormatYcmdDebugInfo( response ) diff --git a/python/ycm/tests/client/debug_info_request_test.py b/python/ycm/tests/client/debug_info_request_test.py index 4ec6aa42..570e92e5 100644 --- a/python/ycm/tests/client/debug_info_request_test.py +++ b/python/ycm/tests/client/debug_info_request_test.py @@ -26,7 +26,7 @@ from builtins import * # noqa from copy import deepcopy from hamcrest import assert_that, contains_string, equal_to -from ycm.client.debug_info_request import _FormatDebugInfoResponse +from ycm.client.debug_info_request import FormatDebugInfoResponse GENERIC_RESPONSE = { @@ -76,7 +76,7 @@ GENERIC_RESPONSE = { def FormatDebugInfoResponse_NoResponse_test(): assert_that( - _FormatDebugInfoResponse( None ), + FormatDebugInfoResponse( None ), equal_to( 'Server errored, no debug info from server\n' ) ) @@ -88,7 +88,7 @@ def FormatDebugInfoResponse_NoExtraConf_test(): 'path': None } ) assert_that( - _FormatDebugInfoResponse( response ), + FormatDebugInfoResponse( response ), contains_string( 'No extra configuration file found\n' ) @@ -102,7 +102,7 @@ def FormatDebugInfoResponse_ExtraConfFoundButNotLoaded_test(): 'path': '/path/to/extra/conf' } ) assert_that( - _FormatDebugInfoResponse( response ), + FormatDebugInfoResponse( response ), contains_string( 'Extra configuration file found but not loaded\n' 'Extra configuration path: /path/to/extra/conf\n' @@ -117,7 +117,7 @@ def FormatDebugInfoResponse_ExtraConfFoundAndLoaded_test(): 'path': '/path/to/extra/conf' } ) assert_that( - _FormatDebugInfoResponse( response ), + FormatDebugInfoResponse( response ), contains_string( 'Extra configuration file found and loaded\n' 'Extra configuration path: /path/to/extra/conf\n' @@ -128,7 +128,7 @@ def FormatDebugInfoResponse_ExtraConfFoundAndLoaded_test(): def FormatDebugInfoResponse_Completer_ServerRunningWithHost_test(): response = deepcopy( GENERIC_RESPONSE ) assert_that( - _FormatDebugInfoResponse( response ), + FormatDebugInfoResponse( response ), contains_string( 'Completer name completer debug information:\n' ' Server name running at: http://127.0.0.1:1234\n' @@ -150,7 +150,7 @@ def FormatDebugInfoResponse_Completer_ServerRunningWithoutHost_test(): 'port': None } ) assert_that( - _FormatDebugInfoResponse( response ), + FormatDebugInfoResponse( response ), contains_string( 'Completer name completer debug information:\n' ' Server name running\n' @@ -172,7 +172,7 @@ def FormatDebugInfoResponse_Completer_ServerNotRunningWithNoLogfiles_test(): 'logfiles': [] } ) assert_that( - _FormatDebugInfoResponse( response ), + FormatDebugInfoResponse( response ), contains_string( 'Completer name completer debug information:\n' ' Server name not running\n' diff --git a/python/ycm/tests/youcompleteme_test.py b/python/ycm/tests/youcompleteme_test.py index a43baf95..fde2544a 100644 --- a/python/ycm/tests/youcompleteme_test.py +++ b/python/ycm/tests/youcompleteme_test.py @@ -227,13 +227,19 @@ def YouCompleteMe_ToggleLogs_WithParameters_test( ycm, @YouCompleteMeInstance() @patch( 'ycm.vimsupport.PostVimMessage' ) def YouCompleteMe_ToggleLogs_WithoutParameters_test( ycm, post_vim_message ): - ycm.ToggleLogs() + # We test on a Python buffer because the Python completer has subserver + # logfiles. + python_buffer = VimBuffer( 'buffer.py', filetype = 'python' ) + with MockVimBuffers( [ python_buffer ], python_buffer ): + ycm.ToggleLogs() assert_that( # Argument passed to PostVimMessage. post_vim_message.call_args[ 0 ][ 0 ], matches_regexp( 'Available logfiles are:\n' + 'jedihttp_\d+_stderr_.+.log\n' + 'jedihttp_\d+_stdout_.+.log\n' 'ycm_.+.log\n' 'ycmd_\d+_stderr_.+.log\n' 'ycmd_\d+_stdout_.+.log' ) diff --git a/python/ycm/youcompleteme.py b/python/ycm/youcompleteme.py index 6bd0a82b..28fa7ea1 100644 --- a/python/ycm/youcompleteme.py +++ b/python/ycm/youcompleteme.py @@ -48,7 +48,8 @@ from ycm.client.completer_available_request import SendCompleterAvailableRequest from ycm.client.command_request import SendCommandRequest from ycm.client.completion_request import ( CompletionRequest, ConvertCompletionDataToVimData ) -from ycm.client.debug_info_request import SendDebugInfoRequest +from ycm.client.debug_info_request import ( SendDebugInfoRequest, + FormatDebugInfoResponse ) from ycm.client.omni_completion_request import OmniCompletionRequest from ycm.client.event_notification import ( SendEventNotificationAsync, EventNotification ) @@ -648,7 +649,7 @@ class YouCompleteMe( object ): if self._client_logfile: debug_info += 'Client logfile: {0}\n'.format( self._client_logfile ) if self.IsServerAlive(): - debug_info += SendDebugInfoRequest() + debug_info += FormatDebugInfoResponse( SendDebugInfoRequest() ) else: debug_info += 'Server crashed, no debug info from server\n' debug_info += ( @@ -667,6 +668,14 @@ class YouCompleteMe( object ): logfiles_list = [ self._client_logfile, self._server_stdout, self._server_stderr ] + + if self.IsServerAlive(): + debug_info = SendDebugInfoRequest() + completer = debug_info[ 'completer' ] + if completer: + for server in completer[ 'servers' ]: + logfiles_list.extend( server[ 'logfiles' ] ) + logfiles = {} for logfile in logfiles_list: logfiles[ os.path.basename( logfile ) ] = logfile