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))
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
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
def __init__( self ): self._location = None self._port = None self._hmac_secret = None self._servers = [] self._logfiles = [] self._options_dict = DefaultOptions()
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
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])))
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))
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()
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)
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
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': {
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)
def FilterUnchangedTagFiles_KeepGoodFiles_test(): ident_completer = IdentifierCompleter(DefaultOptions()) tag_file = PathToTestFile('basic.tags') eq_([tag_file], list(ident_completer._FilterUnchangedTagFiles([tag_file])))
def DefinedSubcommands_RemoveStopServerSubcommand_test(subcommands_map): completer = DummyCompleter(DefaultOptions()) eq_(completer.DefinedSubcommands(), ['Foo'])
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))
def test_FilterUnchangedTagFiles_SkipBadFiles(self): ident_completer = IdentifierCompleter(DefaultOptions()) assert_that( list(ident_completer._FilterUnchangedTagFiles(['/some/tags'])), empty())
def test_FilterUnchangedTagFiles_NoFiles(self): ident_completer = IdentifierCompleter(DefaultOptions()) assert_that(list(ident_completer._FilterUnchangedTagFiles([])), empty())
def _FilterAndSortCandidates_Match(candidates, query, expected_matches): completer = DummyCompleter(DefaultOptions()) matches = completer.FilterAndSortCandidates(candidates, query) eq_(expected_matches, matches)
def DefinedSubcommands_RemoveStopServerSubcommand_test(subcommands_map): completer = DummyCompleter(DefaultOptions()) assert_that(completer.DefinedSubcommands(), contains_exactly('Foo'))
def FilterUnchangedTagFiles_NoFiles_test(): ident_completer = IdentifierCompleter(DefaultOptions()) eq_([], list(ident_completer._FilterUnchangedTagFiles([])))
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)
def FilterUnchangedTagFiles_SkipBadFiles_test(): ident_completer = IdentifierCompleter(DefaultOptions()) eq_([], list(ident_completer._FilterUnchangedTagFiles(['/some/tags'])))
def _FilterAndSortCandidates_Match(candidates, query, expected_matches): completer = DummyCompleter(DefaultOptions()) matches = completer.FilterAndSortCandidates(candidates, query) assert_that(expected_matches, equal_to(matches))