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 })) })))
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() }))
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': '{}' }), ) })), })))
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', })) })) }))
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': '{}' }), ) })), })))
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'})
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'))
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': '{}' }), ) })), })))
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]' ) ) } ) )
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' ), ) } ) )
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' ) )
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' ), ) } ) )