Пример #1
0
def Diagnostics_ZeroBasedLineAndColumn_test(app):
    filepath = PathToTestFile('testy', 'Program.cs')
    with WrapOmniSharpServer(app, filepath):
        contents = ReadFile(filepath)

        for _ in (0, 1):  # First call always returns blank for some reason
            event_data = BuildRequest(filepath=filepath,
                                      event_name='FileReadyToParse',
                                      filetype='cs',
                                      contents=contents)

            results = app.post_json('/event_notification', event_data).json

        assert_that(
            results,
            contains(
                has_entries({
                    'kind':
                    equal_to('ERROR'),
                    'text':
                    contains_string(
                        "Unexpected symbol `}'', expecting identifier"),
                    'location':
                    LocationMatcher(filepath, 11, 2),
                    'location_extent':
                    RangeMatcher(filepath, (11, 2), (11, 2)),
                })))
Пример #2
0
def Diagnostics_WithRange_test(app):
    filepath = PathToTestFile('testy', 'DiagnosticRange.cs')
    with WrapOmniSharpServer(app, filepath):
        contents = ReadFile(filepath)

        for _ in (0, 1):  # First call always returns blank for some reason
            event_data = BuildRequest(filepath=filepath,
                                      event_name='FileReadyToParse',
                                      filetype='cs',
                                      contents=contents)

            results = app.post_json('/event_notification', event_data).json

        assert_that(
            results,
            contains(
                has_entries({
                    'kind':
                    equal_to('WARNING'),
                    'text':
                    contains_string("Name should have prefix '_'"),
                    'location':
                    LocationMatcher(filepath, 3, 16),
                    'location_extent':
                    RangeMatcher(filepath, (3, 16), (3, 25))
                })))
Пример #3
0
def Diagnostics_HandleZeroColumnDiagnostic_test(app):
    filepath = PathToTestFile('testy', 'ZeroColumnDiagnostic.cs')
    with WrapOmniSharpServer(app, filepath):
        contents = ReadFile(filepath)

        for _ in (0, 1):  # First call always returns blank for some reason
            event_data = BuildRequest(filepath=filepath,
                                      event_name='FileReadyToParse',
                                      filetype='cs',
                                      contents=contents)

            results = app.post_json('/event_notification', event_data).json

        assert_that(
            results,
            contains(
                has_entries({
                    'kind':
                    equal_to('ERROR'),
                    'text':
                    contains_string("Unexpected symbol `}'', "
                                    "expecting `;'', `{'', or `where''"),
                    'location':
                    LocationMatcher(filepath, 3, 1),
                    'location_extent':
                    RangeMatcher(filepath, (3, 1), (3, 1))
                })))
Пример #4
0
def Diagnostics_MultipleSolution_test(app):
    filepaths = [
        PathToTestFile('testy', 'Program.cs'),
        PathToTestFile('testy-multiple-solutions',
                       'solution-named-like-folder', 'testy', 'Program.cs')
    ]
    lines = [11, 10]
    for filepath, line in zip(filepaths, lines):
        with WrapOmniSharpServer(app, filepath):
            contents = ReadFile(filepath)

            for _ in (0, 1):  # First call always returns blank for some reason
                event_data = BuildRequest(filepath=filepath,
                                          event_name='FileReadyToParse',
                                          filetype='cs',
                                          contents=contents)

                results = app.post_json('/event_notification', event_data).json

            assert_that(
                results,
                contains(
                    has_entries({
                        'kind':
                        equal_to('ERROR'),
                        'text':
                        contains_string("Unexpected symbol `}'', "
                                        "expecting identifier"),
                        'location':
                        LocationMatcher(filepath, line, 2),
                        'location_extent':
                        RangeMatcher(filepath, (line, 2), (line, 2))
                    })))
Пример #5
0
    def test_GetCompletions_PathWithSpace(self, app):
        filepath = PathToTestFile('неприличное слово', 'Program.cs')
        with WrapOmniSharpServer(app, filepath):
            contents = ReadFile(filepath)

            completion_data = BuildRequest(filepath=filepath,
                                           filetype='cs',
                                           contents=contents,
                                           line_num=9,
                                           column_num=12)
            response_data = app.post_json('/completions', completion_data).json
            print('Response: ', response_data)
            assert_that(
                response_data,
                has_entries({
                    'completion_start_column':
                    12,
                    'completions':
                    has_items(
                        CompletionEntryMatcher('CursorLeft', 'CursorLeft',
                                               {'kind': 'Property'}),
                        CompletionEntryMatcher('CursorSize', 'CursorSize',
                                               {'kind': 'Property'}),
                    ),
                    'errors':
                    empty(),
                }))
Пример #6
0
def Diagnostics_WithRange_test(app):
    filepath = PathToTestFile('testy', 'DiagnosticRange.cs')
    with WrapOmniSharpServer(app, filepath):
        contents = ReadFile(filepath)

        event_data = BuildRequest(filepath=filepath,
                                  event_name='FileReadyToParse',
                                  filetype='cs',
                                  contents=contents)

        results = app.post_json('/event_notification', event_data).json

        assert_that(
            results,
            has_items(
                has_entries({
                    'kind':
                    equal_to('ERROR'),
                    'text':
                    contains_string(
                        "A namespace cannot directly "
                        "contain members such as fields or methods"),
                    'location':
                    LocationMatcher(filepath, 1, 1),
                    'location_extent':
                    RangeMatcher(filepath, (1, 1), (1, 6))
                })))
Пример #7
0
def SignatureHelp_TriggerParen_test(app):
    filepath = PathToTestFile('testy', 'ContinuousTest.cs')
    contents = ReadFile(filepath)
    request = BuildRequest(line_num=10,
                           column_num=9,
                           filetypes=['cs'],
                           filepath=filepath,
                           contents=contents)
    with WrapOmniSharpServer(app, filepath):
        response = app.post_json('/signature_help', request).json
        LOGGER.debug('response = %s', response)
        assert_that(
            response,
            has_entries({
                'errors':
                empty(),
                'signature_help':
                has_entries({
                    'activeSignature':
                    0,
                    'activeParameter':
                    0,
                    'signatures':
                    contains(
                        SignatureMatcher(
                            'void ContinuousTest.Main(string[] args)',
                            [ParameterMatcher(25, 38)]))
                })
            }))
Пример #8
0
    def test_Subcommands_OrganizeImports(self, app):
        filepath = PathToTestFile('testy', 'ImportTest.cs')
        with WrapOmniSharpServer(app, filepath):
            request = BuildRequest(command_arguments=['OrganizeImports'],
                                   line_num=11,
                                   column_num=2,
                                   contents=ReadFile(filepath),
                                   filetype='cs',
                                   filepath=filepath)

            response = app.post_json('/run_completer_command', request).json
            print('completer response = ', response)
            assert_that(
                response,
                has_entries({
                    'fixits':
                    contains_exactly(
                        has_entries({
                            'location':
                            LocationMatcher(filepath, 11, 2),
                            'chunks':
                            contains_exactly(
                                ChunkMatcher(
                                    '    ',
                                    LocationMatcher(filepath, 5, 1),
                                    LocationMatcher(filepath, 5, 2),
                                ),
                                ChunkMatcher(
                                    '',
                                    LocationMatcher(filepath, 1, 1),
                                    LocationMatcher(filepath, 3, 1),
                                ))
                        }))
                }))
Пример #9
0
def Subcommands_FixIt_Single_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)
        response = app.post_json('/run_completer_command', request).json
        LOGGER.debug('r = %s', response)
        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))
                            }))
                    }))
            }))
Пример #10
0
def Diagnostics_WithRange_test(app):
    filepath = PathToTestFile('testy', 'DiagnosticRange.cs')
    with WrapOmniSharpServer(app, filepath):
        contents = ReadFile(filepath)

        event_data = BuildRequest(filepath=filepath,
                                  event_name='FileReadyToParse',
                                  filetype='cs',
                                  contents=contents)

        results = app.post_json('/event_notification', event_data).json

        assert_that(
            results,
            contains(
                has_entries({
                    'kind':
                    equal_to('WARNING'),
                    'text':
                    contains_string(
                        "The variable '\u4e5d' is assigned but its value is never used"
                    ),
                    'location':
                    LocationMatcher(filepath, 6, 13),
                    'location_extent':
                    RangeMatcher(filepath, (6, 13), (6, 16))
                })))
Пример #11
0
def Subcommands_GoToImplementationElseDeclaration_MultipleImplementations_test(
  app ):
  filepath = PathToTestFile( 'testy', 'GotoTestCase.cs' )
  with WrapOmniSharpServer( app, filepath ):
    contents = ReadFile( filepath )

    goto_data = BuildRequest(
      completer_target = 'filetype_default',
      command_arguments = [ 'GoToImplementationElseDeclaration' ],
      line_num = 21,
      column_num = 13,
      contents = contents,
      filetype = 'cs',
      filepath = filepath
    )

    eq_( [ {
      'filepath': PathToTestFile( 'testy', 'GotoTestCase.cs' ),
      'line_num': 43,
      'column_num': 3
    }, {
      'filepath': PathToTestFile( 'testy', 'GotoTestCase.cs' ),
      'line_num': 48,
      'column_num': 3
    } ], app.post_json( '/run_completer_command', goto_data ).json )
Пример #12
0
def StopServer_KeepLogFiles(app):
    filepath = PathToTestFile('testy', 'GotoTestCase.cs')
    with WrapOmniSharpServer(app, filepath):
        event_data = BuildRequest(filetype='cs', filepath=filepath)

        response = app.post_json('/debug_info', event_data).json

        logfiles = []
        for server in response['completer']['servers']:
            logfiles.extend(server['logfiles'])

        try:
            for logfile in logfiles:
                assert_that(os.path.exists(logfile),
                            f'Logfile should exist at { logfile }')
        finally:
            app.post_json(
                '/run_completer_command',
                BuildRequest(filetype='cs',
                             filepath=filepath,
                             command_arguments=['StopServer']))

        if user_options_store.Value('server_keep_logfiles'):
            for logfile in logfiles:
                assert_that(os.path.exists(logfile),
                            f'Logfile should still exist at { logfile }')
        else:
            for logfile in logfiles:
                assert_that(not os.path.exists(logfile),
                            f'Logfile should no longer exist at { logfile }')
Пример #13
0
def Diagnostics_ZeroBasedLineAndColumn_test(app):
    filepath = PathToTestFile('testy', 'Program.cs')
    with WrapOmniSharpServer(app, filepath):
        contents = ReadFile(filepath)

        event_data = BuildRequest(filepath=filepath,
                                  event_name='FileReadyToParse',
                                  filetype='cs',
                                  contents=contents)

        results = app.post_json('/event_notification', event_data).json

        assert_that(
            results,
            has_items(
                has_entries({
                    'kind':
                    equal_to('ERROR'),
                    'text':
                    contains_string("Identifier expected"),
                    'location':
                    LocationMatcher(filepath, 10, 12),
                    'location_extent':
                    RangeMatcher(filepath, (10, 12), (10, 12)),
                })))
Пример #14
0
def GetCompletions_Basic_NoSigHelp_test( app ):
  filepath = PathToTestFile( 'testy', 'Program.cs' )
  with WrapOmniSharpServer( app, filepath ):
    WaitUntilCsCompleterIsReady( app, filepath )
    contents = ReadFile( filepath )

    completion_data = BuildRequest( filepath = filepath,
                                    filetype = 'cs',
                                    contents = contents,
                                    line_num = 10,
                                    column_num = 12 )
    response_data = app.post_json( '/completions', completion_data ).json
    print( 'Response: ', response_data )
    assert_that(
      response_data,
      has_entries( {
        'completion_start_column': 12,
        'completions': has_items(
          CompletionEntryMatcher( 'CursorLeft',
                                  'CursorLeft',
                                  { 'kind': 'Property' } ),
          CompletionEntryMatcher( 'CursorSize',
                                  'CursorSize',
                                  { 'kind': 'Property' } ),
        ),
        'errors': empty(),
      } ) )
Пример #15
0
def Diagnostics_MultipleSolution_test(app):
    filepaths = [
        PathToTestFile('testy', 'Program.cs'),
        PathToTestFile('testy-multiple-solutions',
                       'solution-named-like-folder', 'testy', 'Program.cs')
    ]
    for filepath in filepaths:
        with WrapOmniSharpServer(app, filepath):
            contents = ReadFile(filepath)

            event_data = BuildRequest(filepath=filepath,
                                      event_name='FileReadyToParse',
                                      filetype='cs',
                                      contents=contents)

            results = app.post_json('/event_notification', event_data).json

            assert_that(
                results,
                has_items(
                    has_entries({
                        'kind':
                        equal_to('ERROR'),
                        'text':
                        contains_string("Identifier expected"),
                        'location':
                        LocationMatcher(filepath, 10, 12),
                        'location_extent':
                        RangeMatcher(filepath, (10, 12), (10, 12))
                    })))
Пример #16
0
 def test_SignatureHelp_TriggerComma(self, app):
     filepath = PathToTestFile('testy', 'ContinuousTest.cs')
     contents = ReadFile(filepath)
     request = BuildRequest(line_num=17,
                            column_num=16,
                            filetypes=['cs'],
                            filepath=filepath,
                            contents=contents)
     with WrapOmniSharpServer(app, filepath):
         response = app.post_json('/signature_help', request).json
         LOGGER.debug('response = %s', response)
         assert_that(
             response,
             has_entries({
                 'errors':
                 empty(),
                 'signature_help':
                 has_entries({
                     'activeSignature':
                     0,
                     'activeParameter':
                     1,
                     'signatures':
                     contains_exactly(
                         SignatureMatcher(
                             'void ContinuousTest.MultiArg(int i, string s)',
                             [
                                 ParameterMatcher(29, 34),
                                 ParameterMatcher(36, 44)
                             ]))
                 })
             }))
Пример #17
0
def GetCompletions_NonForcedReturnsNoResults_test(app):
    filepath = PathToTestFile('testy', 'ContinuousTest.cs')
    with WrapOmniSharpServer(app, filepath):
        contents = ReadFile(filepath)
        event_data = BuildRequest(filepath=filepath,
                                  filetype='cs',
                                  contents=contents,
                                  event_name='FileReadyToParse')

        app.post_json('/event_notification', event_data)

        completion_data = BuildRequest(filepath=filepath,
                                       filetype='cs',
                                       contents=contents,
                                       line_num=9,
                                       column_num=21,
                                       force_semantic=False,
                                       query='Date')
        results = app.post_json('/completions', completion_data).json

        # There are no semantic completions. However, we fall back to identifier
        # completer in this case.
        assert_that(
            results,
            has_entries({
                'completions':
                has_item(
                    has_entries({
                        'insertion_text': 'String',
                        'extra_menu_info': '[ID]',
                    })),
                'errors':
                empty(),
            }))
Пример #18
0
def Subcommands_FixIt_Single_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)
        response = app.post_json('/run_completer_command', request).json
        LOGGER.debug('r = %s', response)
        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))
                            }))
                    }))
            }))
Пример #19
0
def Subcommands_RefactorRename_Unicode_test(app):
    unicode_test = PathToTestFile('testy', 'Unicode.cs')
    with WrapOmniSharpServer(app, unicode_test, wait_for_diags=False):
        contents = ReadFile(unicode_test)

        request = BuildRequest(completer_target='filetype_default',
                               command_arguments=['RefactorRename', 'x'],
                               line_num=30,
                               column_num=31,
                               contents=contents,
                               filetype='cs',
                               filepath=unicode_test)
        response = app.post_json('/run_completer_command', request).json
        assert_that(
            response,
            has_entries({
                'fixits':
                contains_exactly(
                    has_entries({
                        'location':
                        LocationMatcher(unicode_test, 30, 31),
                        'chunks':
                        contains_exactly(
                            has_entries({
                                'replacement_text':
                                'x',
                                'range':
                                RangeMatcher(unicode_test, (30, 29), (30, 35))
                            }))
                    }))
            }))
Пример #20
0
def GetCompletions_MultipleSolution_test(app):
    filepaths = [
        PathToTestFile('testy', 'Program.cs'),
        PathToTestFile('testy-multiple-solutions',
                       'solution-named-like-folder', 'testy', 'Program.cs')
    ]
    for filepath in filepaths:
        with WrapOmniSharpServer(app, filepath):
            contents = ReadFile(filepath)

            completion_data = BuildRequest(filepath=filepath,
                                           filetype='cs',
                                           contents=contents,
                                           line_num=10,
                                           column_num=12)
            response_data = app.post_json('/completions', completion_data).json

            print('Response: ', response_data)
            assert_that(
                response_data,
                has_entries({
                    'completion_start_column':
                    12,
                    'completions':
                    has_items(
                        CompletionEntryMatcher('CursorLeft', 'CursorLeft',
                                               {'kind': 'Property'}),
                        CompletionEntryMatcher('CursorSize', 'CursorSize',
                                               {'kind': 'Property'}),
                    ),
                    'errors':
                    empty(),
                }))
Пример #21
0
def GetCompletions_Unicode_test(app):
    filepath = PathToTestFile('testy', 'Unicode.cs')
    with WrapOmniSharpServer(app, filepath):
        contents = ReadFile(filepath)

        completion_data = BuildRequest(filepath=filepath,
                                       filetype='cs',
                                       contents=contents,
                                       line_num=43,
                                       column_num=26)
        response_data = app.post_json('/completions', completion_data).json
        assert_that(
            response_data,
            has_entries({
                'completion_start_column':
                26,
                'completions':
                has_items(
                    CompletionEntryMatcher('DoATest'),
                    CompletionEntryMatcher('an_int'),
                    CompletionEntryMatcher('a_unicøde'),
                    CompletionEntryMatcher('øøø'),
                ),
                'errors':
                empty(),
            }))
Пример #22
0
def GetCompletions_ImportsOrderedAfter_test( app ):
  filepath = PathToTestFile( 'testy', 'ImportTest.cs' )
  with WrapOmniSharpServer( app, filepath ):
    contents = ReadFile( filepath )

    completion_data = BuildRequest( filepath = filepath,
                                    filetype = 'cs',
                                    contents = contents,
                                    line_num = 9,
                                    column_num = 12,
                                    force_semantic = True,
                                    query = 'Date' )
    response_data = app.post_json( '/completions', completion_data ).json

    min_import_index = min(
      loc for loc, val
      in enumerate( response_data[ 'completions' ] )
      if val[ 'extra_data' ][ 'required_namespace_import' ]
    )

    max_nonimport_index = max(
      loc for loc, val
      in enumerate( response_data[ 'completions' ] )
      if not val[ 'extra_data' ][ 'required_namespace_import' ]
    )

    assert_that( min_import_index, greater_than( max_nonimport_index ) ),
Пример #23
0
def Subcommands_RefactorRename_Basic_test(app):
    continuous_test = PathToTestFile('testy', 'ContinuousTest.cs')
    with WrapOmniSharpServer(app, continuous_test):
        contents = ReadFile(continuous_test)

        request = BuildRequest(completer_target='filetype_default',
                               command_arguments=['RefactorRename', 'x'],
                               line_num=5,
                               column_num=15,
                               contents=contents,
                               filetype='cs',
                               filepath=continuous_test)
        response = app.post_json('/run_completer_command', request).json
        assert_that(
            response,
            has_entries({
                'fixits':
                contains(
                    has_entries({
                        'location':
                        LocationMatcher(continuous_test, 5, 15),
                        'chunks':
                        contains(
                            has_entries({
                                'replacement_text':
                                'x',
                                'range':
                                RangeMatcher(continuous_test, (5, 15), (5, 29))
                            }))
                    }))
            }))
Пример #24
0
def Diagnostics_Basic_test(app):
    filepath = PathToTestFile('testy', 'Program.cs')
    with WrapOmniSharpServer(app, filepath):
        contents = ReadFile(filepath)

        event_data = BuildRequest(filepath=filepath,
                                  event_name='FileReadyToParse',
                                  filetype='cs',
                                  contents=contents)
        app.post_json('/event_notification', event_data)

        diag_data = BuildRequest(filepath=filepath,
                                 filetype='cs',
                                 contents=contents,
                                 line_num=11,
                                 column_num=2)

        results = app.post_json('/detailed_diagnostic', diag_data).json

        assert_that(
            results,
            has_entry(
                'message',
                contains_string(
                    "'Console' does not contain a definition for ''")))
Пример #25
0
def Subcommands_RefactorRename_MultiFile_test( app ):
  continuous_test = PathToTestFile( 'testy', 'ContinuousTest.cs' )
  fixit_test = PathToTestFile( 'testy', 'FixItTestCase.cs' )
  get_type_test = PathToTestFile( 'testy', 'GetTypeTestCase.cs' )
  goto_test = PathToTestFile( 'testy', 'GotoTestCase.cs' )
  import_test = PathToTestFile( 'testy', 'ImportTest.cs' )
  program = PathToTestFile( 'testy', 'Program.cs' )
  get_doc_test = PathToTestFile( 'testy', 'GetDocTestCase.cs' )
  unicode_test = PathToTestFile( 'testy', 'Unicode.cs' )
  with WrapOmniSharpServer( app, continuous_test ):
    contents = ReadFile( continuous_test )

    request = BuildRequest( completer_target = 'filetype_default',
                            command_arguments = [ 'RefactorRename', 'x' ],
                            line_num = 3,
                            column_num = 11,
                            contents = contents,
                            filetype = 'cs',
                            filepath = continuous_test )

    response = app.post_json( '/run_completer_command', request ).json
    print( 'response = ', response )
    assert_that( response, has_entries( {
      'fixits': contains_exactly( has_entries( {
        'location': LocationMatcher( continuous_test, 3, 11 ),
        'chunks': contains_exactly(
          has_entries( {
            'replacement_text': 'x',
            'range': RangeMatcher( continuous_test, ( 3, 11 ), ( 3, 16 ) )
          } ),
          has_entries( {
            'replacement_text': 'x',
            'range': RangeMatcher( fixit_test, ( 1, 11 ), ( 1, 16 ) )
          } ),
          has_entries( {
            'replacement_text': 'x',
            'range': RangeMatcher( get_doc_test, ( 4, 11 ), ( 4, 16 ) )
          } ),
          has_entries( {
            'replacement_text': 'x',
            'range': RangeMatcher( get_type_test, ( 2, 11 ), ( 2, 16 ) )
          } ),
          has_entries( {
            'replacement_text': 'x',
            'range': RangeMatcher( goto_test, ( 4, 11 ), ( 4, 16 ) )
          } ),
          has_entries( {
            'replacement_text': 'x',
            'range': RangeMatcher( import_test, ( 3, 11 ), ( 3, 16 ) )
          } ),
          has_entries( {
            'replacement_text': 'x',
            'range': RangeMatcher( program, ( 3, 11 ), ( 3, 16 ) )
          } ),
          has_entries( {
            'replacement_text': 'x',
            'range': RangeMatcher( unicode_test, ( 4, 11 ), ( 4, 16 ) )
          } ),
        ) } ) ) } ) )
Пример #26
0
def SignatureHelp_MultipleSignatures_test( app ):
  filepath = PathToTestFile( 'testy', 'ContinuousTest.cs' )
  contents = ReadFile( filepath )
  request = BuildRequest(
    line_num = 18,
    column_num = 15,
    filetypes = [ 'cs' ],
    filepath = filepath,
    contents = contents )
  with WrapOmniSharpServer( app, filepath ):
    response = app.post_json( '/signature_help', request ).json
    LOGGER.debug( 'response = %s', response )
    assert_that( response, has_entries( {
      'errors': empty(),
      'signature_help': has_entries( {
        'activeSignature': 0,
        'activeParameter': 0,
        'signatures': contains_exactly(
          SignatureMatcher( 'void ContinuousTest.Overloaded(int i, int a)',
                            [ ParameterMatcher( 31, 36 ),
                              ParameterMatcher( 38, 43 ) ] ),
          SignatureMatcher( 'void ContinuousTest.Overloaded(string s)',
                            [ ParameterMatcher( 31, 39 ) ] ),
        )
      } )
    } ) )
  request[ 'column_num' ] = 20
  with WrapOmniSharpServer( app, filepath ):
    response = app.post_json( '/signature_help', request ).json
    LOGGER.debug( 'response = %s', response )
    assert_that( response, has_entries( {
      'errors': empty(),
      'signature_help': has_entries( {
        'activeSignature': 0,
        'activeParameter': 1,
        'signatures': contains_exactly(
          SignatureMatcher( 'void ContinuousTest.Overloaded(int i, int a)',
                            [ ParameterMatcher( 31, 36 ),
                              ParameterMatcher( 38, 43 ) ] ),
          SignatureMatcher( 'void ContinuousTest.Overloaded(string s)',
                            [ ParameterMatcher( 31, 39 ) ] ),
        )
      } )
    } ) )
Пример #27
0
def GetCompletions_ReloadSolution_Basic_test(app):
    filepath = PathToTestFile('testy', 'Program.cs')
    with WrapOmniSharpServer(app, filepath):
        result = app.post_json(
            '/run_completer_command',
            BuildRequest(completer_target='filetype_default',
                         command_arguments=['ReloadSolution'],
                         filepath=filepath,
                         filetype='cs')).json

        eq_(result, True)
Пример #28
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',
                        }))
                    }))
            }))
Пример #29
0
def Subcommands_FixIt_NoFixitsFound_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=1,
                               column_num=1,
                               contents=contents,
                               filetype='cs',
                               filepath=fixit_test)
        response = app.post_json('/run_completer_command', request).json
        assert_that(response, has_entries({'fixits': empty()}))
Пример #30
0
def Subcommands_GetType_VariableUsage_test(app):
    filepath = PathToTestFile('testy', 'GetTypeTestCase.cs')
    with WrapOmniSharpServer(app, filepath):
        contents = ReadFile(filepath)

        gettype_data = BuildRequest(completer_target='filetype_default',
                                    command_arguments=['GetType'],
                                    line_num=6,
                                    column_num=5,
                                    contents=contents,
                                    filetype='cs',
                                    filepath=filepath)

        response = app.post_json('/run_completer_command', gettype_data).json
        assert_that(response, has_entry('message', 'string str'))