def Subcommands_FixIt_Range_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 = 23, contents = contents, filetype = 'cs', filepath = fixit_test ) request.update( { 'range': { 'start': { 'line_num': 4, 'column_num': 23 }, 'end': { 'line_num': 4, 'column_num': 27 } } } ) response = app.post_json( '/run_completer_command', request ).json assert_that( response, has_entries( { 'fixits': contains( has_entries( { 'location': LocationMatcher( fixit_test, 4, 23 ), 'chunks': contains( has_entries( { 'replacement_text': '\n {\n NewMethod();\n }\n\n' ' private static void NewMethod()\n {\r\n', 'range': RangeMatcher( fixit_test, ( 3, 31 ), ( 4, 1 ) ) } ) ) } ) ) } ) )
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 _ShouldUseNowForLine( filename_completer, contents, extra_data = None, column_num = None ): # Strictly, column numbers are *byte* offsets, not character offsets. If # the contents of the file contain unicode characters, then we should manually # supply the correct byte offset. column_num = len( contents ) + 1 if not column_num else column_num request = BuildRequest( column_num = column_num, filepath = PATH_TO_TEST_FILE, contents = contents ) if extra_data: request.update( extra_data ) request_data = RequestWrap( request ) return filename_completer.ShouldUseNow( request_data )
def Subcommands_FixIt_Range_test(app): fixit_test = PathToTestFile('testy', 'FixItTestCase.cs') with WrapOmniSharpServer(app, fixit_test, wait_for_diags=False): contents = ReadFile(fixit_test) request = BuildRequest(completer_target='filetype_default', command_arguments=['FixIt'], line_num=4, column_num=17, contents=contents, filetype='cs', filepath=fixit_test) request.update({ 'range': { 'start': { 'line_num': 4, 'column_num': 17 }, 'end': { 'line_num': 4, 'column_num': 19 } } }) response = app.post_json('/run_completer_command', request).json assert_that( response, has_entries({ 'fixits': contains_exactly( has_entries({ 'location': LocationMatcher(fixit_test, 4, 17), 'chunks': contains_exactly( has_entries({ 'replacement_text': 'var', 'range': RangeMatcher(fixit_test, (4, 13), (4, 16)) })) })) }))
def Subcommands_FixIt_Range_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=5, column_num=23, contents=contents, filetype='cs', filepath=fixit_test) request.update({ 'range': { 'start': { 'line_num': 5, 'column_num': 23 }, 'end': { 'line_num': 5, 'column_num': 27 } } }) response = app.post_json('/run_completer_command', request).json assert_that( response, has_entries({ 'fixits': contains_exactly( has_entries({ 'text': 'Extract method', 'command': has_entries({'index': 0}), 'resolve': True }), has_entries({ 'text': 'Extract local function', 'command': has_entries({'index': 1}), 'resolve': True }), ) }))
def _CompletionResultsForLine( filename_completer, contents, extra_data = None, column_num = None ): # Strictly, column numbers are *byte* offsets, not character offsets. If # the contents of the file contain unicode characters, then we should manually # supply the correct byte offset. column_num = len( contents ) + 1 if not column_num else column_num request = BuildRequest( column_num = column_num, filepath = PATH_TO_TEST_FILE, contents = contents ) if extra_data: request.update( extra_data ) request_data = RequestWrap( request ) candidates = filename_completer.ComputeCandidatesInner( request_data ) return [ ( c[ 'insertion_text' ], c[ 'extra_menu_info' ] ) for c in candidates ]