def Wrapper( *args, **kwargs ): user_options = user_options_store.DefaultOptions() user_options[ 'gocode_binary_path' ] = DUMMY_BINARY with patch( 'ycmd.utils.SafePopen' ): completer = GoCompleter( user_options ) return test( completer, *args, **kwargs )
class GoCompleter_test(object): def setUp(self): user_options = user_options_store.DefaultOptions() user_options['gocode_binary_path'] = DUMMY_BINARY self._completer = GoCompleter(user_options) def _BuildRequest(self, line_num, column_num): request = REQUEST_DATA.copy() request['column_num'] = column_num request['line_num'] = line_num request['file_data'][PATH_TO_TEST_FILE]['contents'] = ReadFile( PATH_TO_TEST_FILE) return RequestWrap(request) def FindGoCodeBinary_test(self): user_options = user_options_store.DefaultOptions() eq_(GO_BINARIES.get("gocode"), FindBinary("gocode", user_options)) user_options['gocode_binary_path'] = DUMMY_BINARY eq_(DUMMY_BINARY, FindBinary("gocode", user_options)) user_options['gocode_binary_path'] = DATA_DIR eq_(None, FindBinary("gocode", user_options)) # Test line-col to offset in the file before any unicode occurrences. def ComputeCandidatesInnerOffsetBeforeUnicode_test(self): mock = MockPopen(returncode=0, stdout=ReadFile(PATH_TO_POS121_RES), stderr='') self._completer._popener = mock # Col 8 corresponds to cursor at log.Pr^int("Line 7 ... self._completer.ComputeCandidatesInner(self._BuildRequest(7, 8)) eq_(mock.cmd, [ DUMMY_BINARY, '-f=json', 'autocomplete', PATH_TO_TEST_FILE, '119' ]) # Test line-col to offset in the file after a unicode occurrences. def ComputeCandidatesInnerAfterUnicode_test(self): mock = MockPopen(returncode=0, stdout=ReadFile(PATH_TO_POS215_RES), stderr='') self._completer._popener = mock # Col 9 corresponds to cursor at log.Pri^nt("Line 7 ... self._completer.ComputeCandidatesInner(self._BuildRequest(9, 9)) eq_(mock.cmd, [ DUMMY_BINARY, '-f=json', 'autocomplete', PATH_TO_TEST_FILE, '212' ]) # Test end to end parsing of completed results. def ComputeCandidatesInner_test(self): mock = MockPopen(returncode=0, stdout=ReadFile(PATH_TO_POS292_RES), stderr='') self._completer._popener = mock # Col 40 corresponds to cursor at ..., log.Prefi^x ... result = self._completer.ComputeCandidatesInner( self._BuildRequest(10, 40)) eq_(mock.cmd, [ DUMMY_BINARY, '-f=json', 'autocomplete', PATH_TO_TEST_FILE, '287' ]) eq_(result, [{ 'menu_text': u'Prefix', 'insertion_text': u'Prefix', 'extra_menu_info': u'func() string', 'detailed_info': u'Prefix func() string func', 'kind': u'func' }]) # Test gocode failure. @raises(RuntimeError) def ComputeCandidatesInnerGoCodeFailure_test(self): mock = MockPopen(returncode=1, stdout='', stderr='') self._completer._popener = mock self._completer.ComputeCandidatesInner(self._BuildRequest(1, 1)) # Test JSON parsing failure. @raises(RuntimeError) def ComputeCandidatesInnerParseFailure_test(self): mock = MockPopen(returncode=0, stdout="{this isn't parseable", stderr='') self._completer._popener = mock self._completer.ComputeCandidatesInner(self._BuildRequest(1, 1)) # Test empty results error (different than no results). @raises(RuntimeError) def ComputeCandidatesInnerNoResultsFailure_test(self): mock = MockPopen(returncode=0, stdout='[]', stderr='') self._completer._popener = mock self._completer.ComputeCandidatesInner(self._BuildRequest(1, 1)) # Test empty results error (different than no results). @raises(RuntimeError) def ComputeCandidatesGoCodePanic_test(self): mock = MockPopen(returncode=0, stdout=ReadFile(PATH_TO_PANIC_OUTPUT_RES), stderr='') self._completer._popener = mock self._completer.ComputeCandidatesInner(self._BuildRequest(1, 1))
def setUp(self): user_options = user_options_store.DefaultOptions() user_options['gocode_binary_path'] = DUMMY_BINARY self._completer = GoCompleter(user_options)
def GetCompleter( user_options ): if not ShouldEnableGoCompleter( user_options ): return None return GoCompleter( user_options )