def __run(self, args): """ run self.cmd adding args as additional arguments Be verbose about errors and encode them in the return value, don't pass on exceptions. """ try: retcode = self.__call(args) if retcode < 0: err_detail = "%s was terminated by signal %d" % (self.cmd, -retcode) elif retcode > 0: err_detail = "%s returned %d" % (self.cmd, retcode) except OSError as err: err_detail = "Execution failed: %s" % err retcode = 1 if retcode: log.err("%s: %s" % (self.run_error, err_detail)) self.retcode = retcode return retcode
def __run(self, args, quiet=False): """ run self.cmd adding args as additional arguments @param quiet: don't log errors to stderr Mostly useful during unit testing. Be verbose about errors and encode them in the return value, don't pass on exceptions. """ try: retcode = self.__call(args) if retcode < 0: err_detail = "it was terminated by signal %d" % -retcode elif retcode > 0: err_detail = "it exited with %d" % retcode except OSError as err: err_detail = "execution failed: %s" % err retcode = 1 if retcode and not quiet: log.err("%s: %s" % (self.run_error, err_detail)) self.retcode = retcode return retcode
def _log_err(self): "Log an error message" log.err(self._format_err())