Exemplo n.º 1
0
def GenericLSPCompleter_Diagnostics_test(app):
    request = BuildRequest(filepath=TEST_FILE,
                           filetype='foo',
                           line_num=1,
                           column_num=1,
                           contents=TEST_FILE_CONTENT,
                           event_name='FileReadyToParse')

    app.post_json('/event_notification', request)
    WaitUntilCompleterServerReady(app, 'foo')
    request.pop('event_name')
    response = app.post_json('/receive_messages', request)
    assert_that(
        response.json,
        has_items(
            has_entries({
                'diagnostics':
                has_items(
                    has_entries({
                        'kind':
                        equal_to('WARNING'),
                        'location':
                        LocationMatcher(TEST_FILE, 2, 1),
                        'location_extent':
                        RangeMatcher(TEST_FILE, (2, 1), (2, 4)),
                        'text':
                        equal_to('FOO is all uppercase.'),
                        'fixit_available':
                        False
                    }))
            })))
Exemplo n.º 2
0
def GenericLSPCompleter_SignatureHelp_NotASigHelpProvider_test(app, *args):
    test_file = PathToTestFile('generic_server', 'foo', 'bar', 'baz',
                               'test_file')
    request = BuildRequest(filepath=test_file,
                           filetype='foo',
                           line_num=1,
                           column_num=1,
                           contents='',
                           event_name='FileReadyToParse')
    app.post_json('/event_notification', request)
    WaitUntilCompleterServerReady(app, 'foo')
    request.pop('event_name')
    response = app.post_json('/signature_help', request).json
    assert_that(
        response,
        has_entries({
            'signature_help':
            has_entries({
                'activeSignature': 0,
                'activeParameter': 0,
                'signatures': empty()
            }),
            'errors':
            empty()
        }))
Exemplo n.º 3
0
    def test_GenericLSPCompleter_DebugInfo_CustomRoot(self, app, *args):
        test_file = PathToTestFile('generic_server', 'foo', 'bar', 'baz',
                                   'test_file')
        request = BuildRequest(filepath=test_file,
                               filetype='foo',
                               line_num=1,
                               column_num=1,
                               contents='',
                               event_name='FileReadyToParse')

        app.post_json('/event_notification', request)
        WaitUntilCompleterServerReady(app, 'foo')
        request.pop('event_name')
        response = app.post_json('/debug_info', request).json
        assert_that(
            response,
            has_entry(
                'completer',
                has_entries({
                    'name':
                    'GenericLSP',
                    'servers':
                    contains_exactly(
                        has_entries({
                            'name':
                            'fooCompleter',
                            'is_running':
                            instance_of(bool),
                            'executable':
                            contains_exactly(instance_of(str),
                                             instance_of(str),
                                             instance_of(str)),
                            'address':
                            None,
                            'port':
                            None,
                            'pid':
                            instance_of(int),
                            'logfiles':
                            contains_exactly(instance_of(str)),
                            'extras':
                            contains_exactly(
                                has_entries({
                                    'key': 'Server State',
                                    'value': instance_of(str),
                                }),
                                has_entries({
                                    'key':
                                    'Project Directory',
                                    'value':
                                    PathToTestFile('generic_server', 'foo'),
                                }),
                                has_entries({
                                    'key': 'Settings',
                                    'value': '{}'
                                }),
                            )
                        })),
                })))
Exemplo n.º 4
0
def Subcommands_FixIt_Multi_test(app):
    fixit_test = PathToTestFile('testy', 'FixItTestCase.cs')
    with WrapOmniSharpServer(app, fixit_test):
        contents = ReadFile(fixit_test)

        request = BuildRequest(completer_target='filetype_default',
                               command_arguments=['FixIt'],
                               line_num=4,
                               column_num=27,
                               contents=contents,
                               filetype='cs',
                               filepath=fixit_test)
        response = app.post_json('/run_completer_command', request).json
        assert_that(
            response,
            has_entries({
                'fixits':
                contains(
                    has_entries({
                        'text': 'Introduce constant',
                        'command': has_entries({'index': 0}),
                        'resolve': True
                    }),
                    has_entries({
                        'text': 'Convert to binary',
                        'command': has_entries({'index': 1}),
                        'resolve': True
                    }),
                    has_entries({
                        'text': 'Convert to hex',
                        'command': has_entries({'index': 2}),
                        'resolve': True
                    }),
                )
            }))
        request.pop('command_arguments')
        request.update({'fixit': response['fixits'][1]})
        response = app.post_json('/resolve_fixit', request).json
        LOGGER.debug('r = %s', response)
        assert_that(
            response,
            has_entries({
                'fixits':
                contains(
                    has_entries({
                        'location':
                        LocationMatcher(fixit_test, 4, 27),
                        'chunks':
                        contains(has_entries({
                            'replacement_text': '0b101',
                        }))
                    }))
            }))
Exemplo n.º 5
0
def GenericLSPCompleter_ConnectTimeout_test(app):
    with patch.object(TCPSingleStreamConnection, 'TCP_CONNECT_TIMEOUT', 1):
        request = BuildRequest(filepath=TEST_FILE,
                               filetype='foo',
                               line_num=1,
                               column_num=1,
                               contents=TEST_FILE_CONTENT,
                               event_name='FileReadyToParse')
        app.post_json('/event_notification', request)

        import time
        # We patched the timeout to 1s
        time.sleep(1.5)

        request.pop('event_name')
        response = app.post_json('/debug_info', request).json
        assert_that(
            response,
            has_entry(
                'completer',
                has_entries({
                    'name':
                    'GenericLSP',
                    'servers':
                    contains_exactly(
                        has_entries({
                            'name':
                            'fooCompleter',
                            'port':
                            TEST_PORT,
                            'pid':
                            None,
                            'logfiles':
                            empty(),
                            'extras':
                            contains_exactly(
                                has_entries({
                                    'key': 'Server State',
                                    'value': 'Dead',
                                }),
                                has_entries({
                                    'key': 'Project Directory',
                                    'value': None,
                                }),
                                has_entries({
                                    'key': 'Settings',
                                    'value': '{}'
                                }),
                            )
                        })),
                })))
Exemplo n.º 6
0
def GenericLSPCompleter_Hover_HasResponse_test(app, *args):
    request = BuildRequest(filepath=TEST_FILE,
                           filetype='foo',
                           line_num=1,
                           column_num=1,
                           contents=TEST_FILE_CONTENT,
                           event_name='FileReadyToParse')

    app.post_json('/event_notification', request)
    WaitUntilCompleterServerReady(app, 'foo')
    request.pop('event_name')
    request['command_arguments'] = ['GetHover']
    response = app.post_json('/run_completer_command', request).json
    eq_(response, {'message': 'asd'})
Exemplo n.º 7
0
def GenericLSPCompleter_HoverIsList_test(get_hover, app):
    request = BuildRequest(filepath=TEST_FILE,
                           filetype='foo',
                           line_num=1,
                           column_num=1,
                           contents=TEST_FILE_CONTENT,
                           event_name='FileReadyToParse')

    app.post_json('/event_notification', request)
    WaitUntilCompleterServerReady(app, 'foo')
    request.pop('event_name')
    request['command_arguments'] = ['GetHover']
    response = app.post_json('/run_completer_command', request).json
    assert_that(response, has_entry('detailed_info', 'asd\nqe\nyes, it does'))
Exemplo n.º 8
0
    def test_GenericLSPCompleter_DebugInfo_TCP_GeneratePort(self, app):
        request = BuildRequest(filepath=TEST_FILE,
                               filetype='foo',
                               line_num=1,
                               column_num=1,
                               contents=TEST_FILE_CONTENT,
                               event_name='FileReadyToParse')
        app.post_json('/event_notification', request)
        WaitUntilCompleterServerReady(app, 'foo')

        request.pop('event_name')
        response = app.post_json('/debug_info', request).json
        assert_that(
            response,
            has_entry(
                'completer',
                has_entries({
                    'name':
                    'GenericLSP',
                    'servers':
                    contains_exactly(
                        has_entries({
                            'name':
                            'fooCompleter',
                            'port':
                            instance_of(int),
                            'pid':
                            instance_of(int),
                            'logfiles':
                            contains_exactly(instance_of(str),
                                             instance_of(str)),
                            'extras':
                            contains_exactly(
                                has_entries({
                                    'key': 'Server State',
                                    'value': instance_of(str),
                                }),
                                has_entries({
                                    'key':
                                    'Project Directory',
                                    'value':
                                    PathToTestFile('generic_server'),
                                }),
                                has_entries({
                                    'key': 'Settings',
                                    'value': '{}'
                                }),
                            )
                        })),
                })))
Exemplo n.º 9
0
def GenericLSPCompleter_GetCompletions_NotACompletionProvider_test( app ):
  completer = handlers._server_state.GetFiletypeCompleter( [ 'foo' ] )
  with patch.object( completer, '_is_completion_provider', False ):
    request = BuildRequest( filepath = TEST_FILE,
                          filetype = 'foo',
                          line_num = 1,
                          column_num = 3,
                          contents = 'Java',
                          event_name = 'FileReadyToParse' )
    app.post_json( '/event_notification', request )
    WaitUntilCompleterServerReady( app, 'foo' )
    request.pop( 'event_name' )
    response = app.post_json( '/completions', BuildRequest( **request ) )
    assert_that( response.json, has_entries( { 'completions': contains_exactly(
      CompletionEntryMatcher( 'Java', '[ID]' ) ) } ) )
Exemplo n.º 10
0
def GenericLSPCompleter_GetCompletions_FilteredNoForce_test( app ):
  request = BuildRequest( filepath = TEST_FILE,
                          filetype = 'foo',
                          line_num = 1,
                          column_num = 3,
                          contents = 'Java',
                          event_name = 'FileReadyToParse' )
  app.post_json( '/event_notification', request )
  WaitUntilCompleterServerReady( app, 'foo' )
  request.pop( 'event_name' )
  response = app.post_json( '/completions', BuildRequest( **request ) )
  assert_that( response.status_code, equal_to( 200 ) )
  print( f'Completer response: { json.dumps( response.json, indent = 2 ) }' )
  assert_that( response.json, has_entries( {
    'completions': contains_exactly(
      CompletionEntryMatcher( 'JavaScript', 'JavaScript details' ),
    )
  } ) )
Exemplo n.º 11
0
def GenericLSPCompleter_Hover_RequestFails_test( app ):
  request = BuildRequest( filepath = TEST_FILE,
                          filetype = 'foo',
                          line_num = 1,
                          column_num = 1,
                          contents = TEST_FILE_CONTENT,
                          event_name = 'FileReadyToParse' )

  app.post_json( '/event_notification', request )
  WaitUntilCompleterServerReady( app, 'foo' )
  request.pop( 'event_name' )
  request[ 'command_arguments' ] = [ 'GetHover' ]
  response = app.post_json( '/run_completer_command',
                            request,
                            expect_errors = True )
  eq_( response.status_code, requests.codes.internal_server_error )

  assert_that( response.json, ErrorMatcher( ResponseFailedException,
    'Request failed: -32601: Unhandled method textDocument/hover' ) )
Exemplo n.º 12
0
def GenericLSPCompleter_GetCompletions_test( app ):
  request = BuildRequest( filepath = TEST_FILE,
                          filetype = 'foo',
                          line_num = 1,
                          column_num = 1,
                          contents = TEST_FILE_CONTENT,
                          event_name = 'FileReadyToParse' )
  app.post_json( '/event_notification', request )
  WaitUntilCompleterServerReady( app, 'foo' )
  request[ 'force_semantic' ] = True
  request.pop( 'event_name' )
  response = app.post_json( '/completions', BuildRequest( **request ) )
  eq_( response.status_code, 200 )
  print( 'Completer response: {}'.format( json.dumps(
    response.json, indent = 2 ) ) )
  assert_that( response.json, has_entries( {
    'completions': contains(
      CompletionEntryMatcher( 'JavaScript', 'JavaScript details' ),
      CompletionEntryMatcher( 'TypeScript', 'TypeScript details' ),
    )
  } ) )