Exemple #1
0
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 ) ) } )
      )
    } ) ) } ) )
Exemple #2
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',
                        }))
                    }))
            }))
Exemple #3
0
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 _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 )
Exemple #5
0
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))
                            }))
                    }))
            }))
Exemple #6
0
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
                    }),
                )
            }))
Exemple #7
0
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 ]
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 ]