def StartServer(self, request_data): with self._server_state_mutex: LOGGER.info('Starting %s: %s', self.GetServerName(), self.GetCommandLine()) self._stderr_file = utils.CreateLogfile('{}_stderr'.format( utils.MakeSafeFileNameString(self.GetServerName()))) with utils.OpenForStdHandle(self._stderr_file) as stderr: self._server_handle = utils.SafePopen(self.GetCommandLine(), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=stderr) self._connection = (lsc.StandardIOLanguageServerConnection( self._server_handle.stdin, self._server_handle.stdout, self.GetDefaultNotificationHandler())) self._connection.Start() try: self._connection.AwaitServerConnection() except lsc.LanguageServerConnectionTimeout: LOGGER.error( '%s failed to start, or did not connect successfully', self.GetServerName()) self.Shutdown() return False LOGGER.info('%s started', self.GetServerName()) return True
def MakeSafeFileNameString_test(): tests = ( ('this is a test 0123 -x', 'this_is_a_test_0123__x'), ('This Is A Test 0123 -x', 'this_is_a_test_0123__x'), ('T˙^ß ^ß å †´ß† 0123 -x', 't______________0123__x'), ('contains/slashes', 'contains_slashes'), ('contains/newline/\n', 'contains_newline__'), ('', ''), ) for t in tests: assert_that(utils.MakeSafeFileNameString(t[0]), equal_to(t[1]))
def test_MakeSafeFileNameString(self): for unsafe_name, safe_name in zip([ 'this is a test 0123 -x', 'This Is A Test 0123 -x', 'T˙^ß ^ß å †´ß† 0123 -x', 'contains/slashes', 'contains/newline/\n', '' ], [ 'this_is_a_test_0123__x', 'this_is_a_test_0123__x', 't______________0123__x', 'contains_slashes', 'contains_newline__', '' ]): with self.subTest(unsafe_name=unsafe_name, safe_name=safe_name): assert_that(utils.MakeSafeFileNameString(unsafe_name), equal_to(safe_name))
def MakeSafeFileNameString_test(unsafe_name, safe_name): assert_that(utils.MakeSafeFileNameString(unsafe_name), equal_to(safe_name))