def GetCompleter(user_options): binary = FindGoCodeBinary(user_options) if binary: _logger.info("Enabling go completion using %s", binary) return GoCodeCompleter(user_options) _logger.info("Could not find gocode binary, no go completion.") return None
def setUp(self): user_options = user_options_store.DefaultOptions() user_options['gocode_binary_path'] = DUMMY_BINARY self._completer = GoCodeCompleter(user_options)
class GoCodeCompleter_test(object): def setUp(self): user_options = user_options_store.DefaultOptions() user_options['gocode_binary_path'] = DUMMY_BINARY self._completer = GoCodeCompleter(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_(PATH_TO_GOCODE_BINARY, self._completer.FindBinary("gocode", user_options)) user_options['gocode_binary_path'] = DUMMY_BINARY eq_(DUMMY_BINARY, self._completer.FindBinary("gocode", user_options)) user_options['gocode_binary_path'] = DATA_DIR eq_(None, self._completer.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, '121' ]) # 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, '215' ]) # 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, '292' ]) 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 GetCompleter(user_options): return GoCodeCompleter(user_options)
def setUp( self ): self._completer = GoCodeCompleter( user_options_store.DefaultOptions() ) self._completer._binary = 'THE_BINARY'
class GoCodeCompleter_test( object ): def setUp( self ): self._completer = GoCodeCompleter( user_options_store.DefaultOptions() ) self._completer._binary = 'THE_BINARY' def _BuildRequest( self, line_num, column_num ): request = REQUEST_DATA.copy() request[ 'column_num' ] = column_num request[ 'line_num' ] = line_num with open(PATH_TO_TEST_FILE, 'r') as testfile: request[ 'file_data' ][ PATH_TO_TEST_FILE ][ 'contents' ] = testfile.read() return RequestWrap( request ) # Test line-col to offset in the file before any unicode occurrences. def ComputeCandidatesInnerOffsetBeforeUnicode_test( self ): with open(PATH_TO_POS121_RES, 'r') as gocodeoutput: mock = MockPopen(returncode=0, stdout=gocodeoutput.read(), 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, ['THE_BINARY', '-f=json', 'autocomplete', PATH_TO_TEST_FILE, "121"]) # Test line-col to offset in the file after a unicode occurrences. def ComputeCandidatesInnerAfterUnicode_test( self ): with open(PATH_TO_POS215_RES, 'r') as gocodeoutput: mock = MockPopen(returncode=0, stdout=gocodeoutput.read(), 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, ['THE_BINARY', '-f=json', 'autocomplete', PATH_TO_TEST_FILE, "215"]) # Test end to end parsing of completed results. def ComputeCandidatesInner_test( self ): with open(PATH_TO_POS292_RES, 'r') as gocodeoutput: mock = MockPopen(returncode=0, stdout=gocodeoutput.read(), 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, ['THE_BINARY', '-f=json', 'autocomplete', PATH_TO_TEST_FILE, "292"]) eq_(result, [{ 'menu_text': u'Prefix', 'insertion_text': u'Prefix', 'extra_menu_info': u'func() string', '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 ): with open(PATH_TO_PANIC_OUTPUT_RES, 'r') as gocodeoutput: mock = MockPopen(returncode=0, stdout=gocodeoutput.read(), stderr="") self._completer._popener = mock self._completer.ComputeCandidatesInner(self._BuildRequest(1, 1))