Example #1
0
    def test_ResolveCompletionRequest_ServerError(self, ycm, post_vim_message,
                                                  logger):
        def ServerResponse(*args):
            return {
                'completions': [{
                    'insertion_text': 'insertion_text',
                    'menu_text': 'menu_text',
                    'extra_menu_info': 'extra_menu_info',
                    'detailed_info': 'detailed_info',
                    'kind': 'kind',
                    'extra_data': {
                        'doc_string': 'doc_string',
                        'resolve': 10
                    }
                }],
                'completion_start_column':
                3,
                'errors': []
            }

        current_buffer = VimBuffer('buffer')
        with MockVimBuffers([current_buffer], [current_buffer]):
            with MockCompletionRequest(ServerResponse):
                ycm.SendCompletionRequest()
                assert_that(ycm.CompletionRequestReady())
                response = ycm.GetCompletionResponse()

                post_vim_message.assert_not_called()
                assert_that(
                    response,
                    has_entries({
                        'completions':
                        contains_exactly(
                            has_entries({
                                'word': 'insertion_text',
                                'abbr': 'menu_text',
                                'menu': 'extra_menu_info',
                                'info': 'detailed_info\ndoc_string',
                                'kind': 'k',
                                'dup': 1,
                                'empty': 1
                            })),
                        'completion_start_column':
                        3
                    }))

                item = response['completions'][0]
                assert_that(json.loads(item['user_data']),
                            has_entries({'resolve': 10}))

            with MockResolveRequest(ServerError('Server error')):
                ycm.ResolveCompletionItem(item)
                assert_that(ycm.CompletionRequestReady())
                response = ycm.GetCompletionResponse()

                logger.exception.assert_called_with(
                    'Error while handling server '
                    'response')
                post_vim_message.assert_has_exact_calls(
                    [call('Server error', truncate=True)])
Example #2
0
def EnsureRequestValid( request_json ):
  required_fields = { 'line_num', 'column_num', 'filepath', 'file_data' }
  missing = { x for x in required_fields if x not in request_json }

  if 'filepath' not in missing and 'file_data' not in missing:
    missing.update( _MissingFieldsForFileData( request_json ) )
  if not missing:
    return True
  message = '\n'.join( _FieldMissingMessage( field ) for field in missing )
  raise ServerError( message )
def YouCompleteMe_GetDefinedSubcommands_ErrorFromServer_test(
        ycm, post_vim_message, logger):
    current_buffer = VimBuffer('buffer')
    with MockVimBuffers([current_buffer], current_buffer):
        with patch('ycm.client.base_request.JsonFromFuture',
                   side_effect=ServerError('Server error')):
            result = ycm.GetDefinedSubcommands()

    logger.exception.assert_called_with('Error while handling server response')
    post_vim_message.assert_has_exact_calls(
        [call('Server error', truncate=False)])
    assert_that(result, empty())
Example #4
0
def CreateCompletionRequest_ErrorFromServer_test(ycm, post_vim_message,
                                                 logger):
    current_buffer = VimBuffer('buffer')
    with MockVimBuffers([current_buffer], current_buffer):
        ycm.CreateCompletionRequest(),

    with patch('icm.client.completion_request.JsonFromFuture',
               side_effect=ServerError('Server error')):
        results = ycm.GetCompletions()

    logger.exception.assert_called_with('Error while handling server response')
    post_vim_message.assert_has_exact_calls(
        [call('Server error', truncate=True)])
    assert_that(results, has_entries({'words': empty(), 'refresh': 'always'}))
Example #5
0
    def test_ResolveCompletionItem_NoUserData(self, ycm, post_vim_message):
        def CompletionResponse(*args):
            return {
                'completions': [{
                    'insertion_text': 'insertion_text',
                    'menu_text': 'menu_text',
                    'extra_menu_info': 'extra_menu_info',
                    'detailed_info': 'detailed_info',
                    'kind': 'kind'
                }],
                'completion_start_column':
                3,
                'errors': []
            }

        current_buffer = VimBuffer('buffer')
        with MockVimBuffers([current_buffer], [current_buffer]):
            with MockCompletionRequest(CompletionResponse):
                ycm.SendCompletionRequest()
                assert_that(ycm.CompletionRequestReady())
                response = ycm.GetCompletionResponse()

                post_vim_message.assert_not_called()
                assert_that(
                    response,
                    has_entries({
                        'completions':
                        contains_exactly(
                            has_entries({
                                'word': 'insertion_text',
                                'abbr': 'menu_text',
                                'menu': 'extra_menu_info',
                                'info': 'detailed_info',
                                'kind': 'k',
                                'dup': 1,
                                'empty': 1
                            })),
                        'completion_start_column':
                        3
                    }))

                item = response['completions'][0]
                item.pop('user_data')

            with MockResolveRequest(ServerError('must not be called')):
                assert_that(ycm.ResolveCompletionItem(item), equal_to(False))
                post_vim_message.assert_not_called()
Example #6
0
def SendCompletionRequest_ErrorFromServer_test(ycm, post_vim_message, logger):
    current_buffer = VimBuffer('buffer')
    with MockVimBuffers([current_buffer], [current_buffer]):
        with MockCompletionRequest(ServerError('Server error')):
            ycm.SendCompletionRequest()
            ok_(ycm.CompletionRequestReady())
            response = ycm.GetCompletionResponse()
            logger.exception.assert_called_with('Error while handling server '
                                                'response')
            post_vim_message.assert_has_exact_calls(
                [call('Server error', truncate=True)])
            assert_that(
                response,
                has_entries({
                    'completions': empty(),
                    'completion_start_column': -1
                }))
 def ErrorResponse( *args ):
   raise ServerError( ERROR_TEXT )
def _RaiseExceptionForData(data):
    if data['exception']['TYPE'] == UnknownExtraConf.__name__:
        raise UnknownExtraConf(data['exception']['extra_conf_file'])

    raise ServerError('{0}: {1}'.format(data['exception']['TYPE'],
                                        data['message']))
Example #9
0
def MakeServerException(data):
    if data['exception']['TYPE'] == UnknownExtraConf.__name__:
        return UnknownExtraConf(data['exception']['extra_conf_file'])

    return ServerError('{0}: {1}'.format(data['exception']['TYPE'],
                                         data['message']))
Example #10
0
def MakeServerException(data):
    if data['exception']['TYPE'] == UnknownExtraConf.__name__:
        return UnknownExtraConf(data['exception']['extra_conf_file'])

    return ServerError(f'{ data[ "exception" ][ "TYPE" ] }: '
                       f'{ data[ "message" ] }')
Example #11
0
    def test_ResolveCompletionRequest_Resolves(self, ycm, post_vim_message,
                                               logger):
        def CompletionResponse(*args):
            return {
                'completions': [{
                    'insertion_text': 'insertion_text',
                    'menu_text': 'menu_text',
                    'extra_menu_info': 'extra_menu_info',
                    'detailed_info': 'detailed_info',
                    'kind': 'kind',
                    'extra_data': {
                        'doc_string': 'doc_string',
                        'resolve': 10
                    }
                }],
                'completion_start_column':
                3,
                'errors': []
            }

        def ResolveResponse(*args):
            return {
                'completion': {
                    'insertion_text': 'insertion_text',
                    'menu_text': 'menu_text',
                    'extra_menu_info': 'extra_menu_info',
                    'detailed_info': 'detailed_info',
                    'kind': 'kind',
                    'extra_data': {
                        'doc_string': 'doc_string with more info'
                    }
                },
                'errors': []
            }

        current_buffer = VimBuffer('buffer')
        with MockVimBuffers([current_buffer], [current_buffer]):
            with MockCompletionRequest(CompletionResponse):
                ycm.SendCompletionRequest()
                assert_that(ycm.CompletionRequestReady())
                response = ycm.GetCompletionResponse()

                post_vim_message.assert_not_called()
                assert_that(
                    response,
                    has_entries({
                        'completions':
                        contains_exactly(
                            has_entries({
                                'word': 'insertion_text',
                                'abbr': 'menu_text',
                                'menu': 'extra_menu_info',
                                'info': 'detailed_info\ndoc_string',
                                'kind': 'k',
                                'dup': 1,
                                'empty': 1
                            })),
                        'completion_start_column':
                        3
                    }))

                item = response['completions'][0]
                assert_that(json.loads(item['user_data']),
                            has_entries({'resolve': 10}))

            with MockResolveRequest(ResolveResponse):
                assert_that(ycm.ResolveCompletionItem(item), equal_to(True))
                assert_that(ycm.CompletionRequestReady())
                response = ycm.GetCompletionResponse()
                post_vim_message.assert_not_called()

                assert_that(
                    response,
                    has_entries({
                        'completion':
                        has_entries({
                            'word': 'insertion_text',
                            'abbr': 'menu_text',
                            'menu': 'extra_menu_info',
                            'info': 'detailed_info\ndoc_string with more info',
                            'kind': 'k',
                            'dup': 1,
                            'empty': 1
                        })
                    }))

                item = response['completion']

            with MockResolveRequest(ServerError('must not be called')):
                assert_that(ycm.ResolveCompletionItem(item), equal_to(False))
                post_vim_message.assert_not_called()