コード例 #1
0
def ClangdCompleter_ShouldEnableClangdCompleter_test():
    user_options = DefaultOptions()

    # Clangd not in third_party (or an old version).
    with patch('ycmd.completers.cpp.clangd_completer.GetThirdPartyClangd',
               return_value=None):
        # Default.
        clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
        assert_that(clangd_completer.ShouldEnableClangdCompleter(user_options),
                    equal_to(False))

        # Found supported binary.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=['clangd']):
            assert_that(
                clangd_completer.ShouldEnableClangdCompleter(user_options),
                equal_to(True))
        # No supported binary found.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=None):
            assert_that(
                clangd_completer.ShouldEnableClangdCompleter(user_options),
                equal_to(False))

        # Clangd is disabled.
        user_options['use_clangd'] = 0
        assert_that(clangd_completer.ShouldEnableClangdCompleter(user_options),
                    equal_to(False))

    user_options = DefaultOptions()

    # Clangd in third_party with a supported version.
    with patch('ycmd.completers.cpp.clangd_completer.GetThirdPartyClangd',
               return_value='third_party_clangd'):
        # Default.
        clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
        assert_that(clangd_completer.ShouldEnableClangdCompleter(user_options),
                    equal_to(True))

        # Enabled.
        user_options['use_clangd'] = 1
        # Found supported binary.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=['clangd']):
            assert_that(
                clangd_completer.ShouldEnableClangdCompleter(user_options),
                equal_to(True))
        # No supported binary found.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=None):
            assert_that(
                clangd_completer.ShouldEnableClangdCompleter(user_options),
                equal_to(False))

        # Disabled.
        user_options['use_clangd'] = 0
        assert_that(clangd_completer.ShouldEnableClangdCompleter(user_options),
                    equal_to(False))
コード例 #2
0
def ClangdCompleter_GetClangdCommand_CustomBinary_test():
    CLANGD_PATH = '/test/clangd'
    user_options = DefaultOptions()
    user_options['clangd_binary_path'] = CLANGD_PATH
    # Supported version.
    with patch('ycmd.completers.cpp.clangd_completer.CheckClangdVersion',
               return_value=True):
        clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
        assert_that(
            clangd_completer.GetClangdCommand(user_options)[0],
            equal_to(CLANGD_PATH))

        # No Clangd binary in the given path.
        with patch('ycmd.completers.cpp.clangd_completer.FindExecutable',
                   return_value=None):
            clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
            assert_that(clangd_completer.GetClangdCommand(user_options),
                        equal_to(None))

    # Unsupported version.
    with patch('ycmd.completers.cpp.clangd_completer.CheckClangdVersion',
               return_value=False):
        # Never fall back to the third-party Clangd.
        clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
        assert_that(clangd_completer.GetClangdCommand(user_options),
                    equal_to(None))

    clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
コード例 #3
0
ファイル: utilities_test.py プロジェクト: zouhejing0000/ycmd
def ClangdCompleter_GetClangdCommand_CustomBinary_test():
    CLANGD_PATH = '/test/clangd'
    user_options = DefaultOptions()
    user_options['clangd_binary_path'] = CLANGD_PATH
    # Supported version.
    with patch('ycmd.completers.cpp.clangd_completer.CheckClangdVersion',
               return_value=True):
        clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
        eq_(
            clangd_completer.GetClangdCommand(user_options, None)[0],
            CLANGD_PATH)

    # Unsupported version.
    with patch('ycmd.completers.cpp.clangd_completer.CheckClangdVersion',
               return_value=False):
        THIRD_PARTY = '/third_party/clangd'
        # Binary in third_party.
        clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
        eq_(
            clangd_completer.GetClangdCommand(user_options, THIRD_PARTY)[0],
            THIRD_PARTY)
        # Binary not in third_party.
        clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
        eq_(clangd_completer.GetClangdCommand(user_options, None), None)

    clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
コード例 #4
0
ファイル: client_test.py プロジェクト: nachose/vim_conf
 def __init__( self ):
   self._location = None
   self._port = None
   self._hmac_secret = None
   self._servers = []
   self._logfiles = []
   self._options_dict = DefaultOptions()
コード例 #5
0
def ClangdCompleter_GetClangdCommand_NoCustomBinary_test():
    user_options = DefaultOptions()

    # Supported binary in third_party.
    THIRD_PARTY = '/third_party/clangd'
    clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
    with patch('ycmd.completers.cpp.clangd_completer.GetThirdPartyClangd',
               return_value=THIRD_PARTY):
        assert_that(
            clangd_completer.GetClangdCommand(user_options)[0],
            equal_to(THIRD_PARTY))
        # With args
        clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
        CLANGD_ARGS = ["1", "2", "3"]
        user_options['clangd_args'] = CLANGD_ARGS
        assert_that(
            clangd_completer.GetClangdCommand(user_options)[1:4],
            equal_to(CLANGD_ARGS))

    # No supported binary in third_party.
    clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
    with patch('ycmd.completers.cpp.clangd_completer.GetThirdPartyClangd',
               return_value=None):
        assert_that(clangd_completer.GetClangdCommand(user_options),
                    equal_to(None))

    clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
コード例 #6
0
def FilterUnchangedTagFiles_SkipUnchangesFiles_test():
    ident_completer = IdentifierCompleter(DefaultOptions())

    # simulate an already open tags file that didn't change in the meantime.
    tag_file = PathToTestFile('basic.tags')
    ident_completer._tags_file_last_mtime[tag_file] = os.path.getmtime(
        tag_file)

    eq_([], list(ident_completer._FilterUnchangedTagFiles([tag_file])))
コード例 #7
0
ファイル: client_test.py プロジェクト: toxeus/ycmd
 def setup_method(self):
     self._location = None
     self._port = None
     self._servers = []
     self._logfiles = []
     self._options_dict = DefaultOptions()
     self._popen_handle = None
     self._hmac_secret = os.urandom(HMAC_SECRET_LENGTH)
     self._options_dict['hmac_secret'] = ToUnicode(
         b64encode(self._hmac_secret))
コード例 #8
0
ファイル: utilities_test.py プロジェクト: zouhejing0000/ycmd
def ClangdCompleter_ShouldEnableClangdCompleter_UseClangd_test():
    user_options = DefaultOptions()
    user_options['use_clangd'] = 'Always'

    # Clangd turned on, assumes the clangd binary was found with a supported
    # version.
    with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
               return_value=['clangd', 'arg1', 'arg2']) as find_clangd_binary:
        eq_(clangd_completer.ShouldEnableClangdCompleter(user_options), True)

    # Clangd turned on but no supported binary.
    with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
               return_value=None) as find_clangd_binary:
        eq_(clangd_completer.ShouldEnableClangdCompleter(user_options), False)
        find_clangd_binary.assert_called()
コード例 #9
0
ファイル: utilities_test.py プロジェクト: zouhejing0000/ycmd
def ClangdCompleter_ShouldEnableClangdCompleter_NoUseClangd_test():
    user_options = DefaultOptions()

    # Clangd not in third_party (or an old version).
    with patch('ycmd.completers.cpp.clangd_completer.Get3rdPartyClangd',
               return_value=None):
        # Default.
        eq_(clangd_completer.ShouldEnableClangdCompleter(user_options), False)

        # Enabled.
        user_options['use_clangd'] = 'Always'
        # Found supported binary.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=True):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                True)
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=None):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                False)

    # Clangd in third_party with a supported version.
    with patch('ycmd.completers.cpp.clangd_completer.Get3rdPartyClangd',
               return_value=True):
        # Disabled.
        user_options['use_clangd'] = 'Never'
        eq_(clangd_completer.ShouldEnableClangdCompleter(user_options), False)

        # Auto.
        user_options['use_clangd'] = 'Auto'
        # Found supported binary.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=True):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                True)
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=None):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                False)
コード例 #10
0
ファイル: utilities_test.py プロジェクト: zouhejing0000/ycmd
def ClangdCompleter_GetClangdCommand_NoCustomBinary_test():
    user_options = DefaultOptions()

    # Supported binary in third_party.
    THIRD_PARTY = '/third_party/clangd'
    clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
    eq_(
        clangd_completer.GetClangdCommand(user_options, THIRD_PARTY)[0],
        THIRD_PARTY)
    # With args
    clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
    CLANGD_ARGS = ["1", "2", "3"]
    user_options['clangd_args'] = CLANGD_ARGS
    eq_(
        clangd_completer.GetClangdCommand(user_options, THIRD_PARTY)[1:4],
        CLANGD_ARGS)

    # No supported binary in third_party.
    clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
    eq_(clangd_completer.GetClangdCommand(user_options, None), None)

    clangd_completer.CLANGD_COMMAND = clangd_completer.NOT_CACHED
コード例 #11
0
ファイル: get_completions_test.py プロジェクト: navs82/ycmd
from nose.tools import eq_
from hamcrest import (assert_that, contains, contains_inanyorder, empty,
                      has_item, has_items, has_entries)

from ycmd.completers.cpp.clangd_completer import (GetVersion, GetClangdCommand,
                                                  GetThirdPartyClangd)
from ycmd.tests.clangd import (IsolatedYcmd, PathToTestFile,
                               RunAfterInitialized, SharedYcmd)
from ycmd.tests.test_utils import (BuildRequest, CombineRequest,
                                   CompletionEntryMatcher, skipIf,
                                   WaitUntilCompleterServerReady, WindowsOnly)
from ycmd.utils import ReadFile
from ycmd.user_options_store import DefaultOptions

Clangd8Only = skipIf(
    GetVersion(GetClangdCommand(DefaultOptions(),
                                GetThirdPartyClangd())[0]) == '7.0.0',
    'Include completion is not implemented in LLVM 7.0.0')


def RunTest(app, test):
    """
  Method to run a simple completion test and verify the result

  Note: Compile commands are extracted from a compile_flags.txt file by clangd
  by iteratively looking at the directory containing the source file and its
  ancestors.

  test is a dictionary containing:
    'request': kwargs for BuildRequest
    'expect': {
コード例 #12
0
import requests
from nose.tools import eq_
from hamcrest import (assert_that, contains, contains_inanyorder, empty,
                      has_item, has_items, has_entries)

from ycmd.completers.cpp.clangd_completer import (GetVersion, GetClangdCommand)
from ycmd.tests.clangd import (IsolatedYcmd, PathToTestFile,
                               RunAfterInitialized, SharedYcmd)
from ycmd.tests.test_utils import (BuildRequest, CombineRequest,
                                   CompletionEntryMatcher, skipIf,
                                   WaitUntilCompleterServerReady, WindowsOnly)
from ycmd.utils import ReadFile
from ycmd.user_options_store import DefaultOptions

Clangd8Only = skipIf(
    GetVersion(GetClangdCommand(DefaultOptions())[0]) == '7.0.0',
    'Include completion is not implemented in LLVM 7.0.0')


def RunTest(app, test):
    """
  Method to run a simple completion test and verify the result

  Note: Compile commands are extracted from a compile_flags.txt file by clangd
  by iteratively looking at the directory containing the source file and its
  ancestors.

  test is a dictionary containing:
    'request': kwargs for BuildRequest
    'expect': {
       'response': server response code (e.g. requests.codes.ok)
コード例 #13
0
def FilterUnchangedTagFiles_KeepGoodFiles_test():
    ident_completer = IdentifierCompleter(DefaultOptions())
    tag_file = PathToTestFile('basic.tags')
    eq_([tag_file], list(ident_completer._FilterUnchangedTagFiles([tag_file])))
コード例 #14
0
ファイル: completer_test.py プロジェクト: HusterYP/VimConf
def DefinedSubcommands_RemoveStopServerSubcommand_test(subcommands_map):
    completer = DummyCompleter(DefaultOptions())
    eq_(completer.DefinedSubcommands(), ['Foo'])
コード例 #15
0
 def test_FilterUnchangedTagFiles_KeepGoodFiles(self):
     ident_completer = IdentifierCompleter(DefaultOptions())
     tag_file = PathToTestFile('basic.tags')
     assert_that(ident_completer._FilterUnchangedTagFiles([tag_file]),
                 contains_exactly(tag_file))
コード例 #16
0
 def test_FilterUnchangedTagFiles_SkipBadFiles(self):
     ident_completer = IdentifierCompleter(DefaultOptions())
     assert_that(
         list(ident_completer._FilterUnchangedTagFiles(['/some/tags'])),
         empty())
コード例 #17
0
 def test_FilterUnchangedTagFiles_NoFiles(self):
     ident_completer = IdentifierCompleter(DefaultOptions())
     assert_that(list(ident_completer._FilterUnchangedTagFiles([])),
                 empty())
コード例 #18
0
ファイル: completer_test.py プロジェクト: HusterYP/VimConf
def _FilterAndSortCandidates_Match(candidates, query, expected_matches):
    completer = DummyCompleter(DefaultOptions())
    matches = completer.FilterAndSortCandidates(candidates, query)
    eq_(expected_matches, matches)
コード例 #19
0
def DefinedSubcommands_RemoveStopServerSubcommand_test(subcommands_map):
    completer = DummyCompleter(DefaultOptions())
    assert_that(completer.DefinedSubcommands(), contains_exactly('Foo'))
コード例 #20
0
def FilterUnchangedTagFiles_NoFiles_test():
    ident_completer = IdentifierCompleter(DefaultOptions())
    eq_([], list(ident_completer._FilterUnchangedTagFiles([])))
コード例 #21
0
def ClangdCompleter_ShouldEnableClangdCompleter_test():
    user_options = DefaultOptions()

    # Clangd not in third_party (or an old version).
    with patch('ycmd.completers.cpp.clangd_completer.GetThirdPartyClangd',
               return_value=None):
        # Default.
        eq_(clangd_completer.ShouldEnableClangdCompleter(user_options), False)

        # Only Clangd in the third-party folder is allowed.
        user_options['use_clangd'] = 'Auto'
        # Found supported binary.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=['clangd']):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                False)
        # No supported binary found.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=None):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                False)

        # Clangd is always enabled.
        user_options['use_clangd'] = 'Always'
        # Found supported binary.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=['clangd']):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                True)
        # No supported binary found.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=None):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                False)

        # Clangd is always disabled.
        user_options['use_clangd'] = 'Never'
        eq_(clangd_completer.ShouldEnableClangdCompleter(user_options), False)

    user_options = DefaultOptions()

    # Clangd in third_party with a supported version.
    with patch('ycmd.completers.cpp.clangd_completer.GetThirdPartyClangd',
               return_value='third_party_clangd'):
        # Default.
        eq_(clangd_completer.ShouldEnableClangdCompleter(user_options), True)

        # Enabled.
        user_options['use_clangd'] = 'Always'
        # Found supported binary.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=True):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                True)
        # No supported binary found.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=None):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                False)

        # Only Clangd in the third-party folder is allowed.
        user_options['use_clangd'] = 'Auto'
        # Found supported binary.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=['clangd']):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                True)
        # No supported binary found.
        with patch('ycmd.completers.cpp.clangd_completer.GetClangdCommand',
                   return_value=None):
            eq_(clangd_completer.ShouldEnableClangdCompleter(user_options),
                False)

        # Disabled.
        user_options['use_clangd'] = 'Never'
        eq_(clangd_completer.ShouldEnableClangdCompleter(user_options), False)
コード例 #22
0
def FilterUnchangedTagFiles_SkipBadFiles_test():
    ident_completer = IdentifierCompleter(DefaultOptions())
    eq_([], list(ident_completer._FilterUnchangedTagFiles(['/some/tags'])))
コード例 #23
0
def _FilterAndSortCandidates_Match(candidates, query, expected_matches):
    completer = DummyCompleter(DefaultOptions())
    matches = completer.FilterAndSortCandidates(candidates, query)
    assert_that(expected_matches, equal_to(matches))