From 289687b4c70e165b5a4809bfcb9f8608f1b55bd3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Karl=20Hasselstr=C3=B6m?= Date: Sat, 8 Dec 2007 09:27:22 +0100 Subject: [PATCH] Discard exitcode of subprocess in a better way MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Discard the exit code in a way that meshes better with the existing handling of exit codes. Signed-off-by: Karl Hasselström --- stgit/commands/log.py | 2 +- stgit/run.py | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/stgit/commands/log.py b/stgit/commands/log.py index 56f7e0a..c5f71a2 100644 --- a/stgit/commands/log.py +++ b/stgit/commands/log.py @@ -141,6 +141,6 @@ def func(parser, options, args): raise CmdException, 'No changelog for patch "%s"' % name if options.graphical: - Run('gitk', log).run(exitcode = False) + Run('gitk', log).discard_exitcode().run() else: show_log(log, options) diff --git a/stgit/run.py b/stgit/run.py index be5ff0f..fa304d0 100644 --- a/stgit/run.py +++ b/stgit/run.py @@ -58,6 +58,8 @@ class Run: duration = datetime.datetime.now() - self.__starttime out.done('%1.3f s' % (duration.microseconds/1e6 + duration.seconds)) def __check_exitcode(self): + if self.__good_retvals == None: + return if self.exitcode not in self.__good_retvals: raise self.exc('%s failed with code %d' % (self.__cmd[0], self.exitcode)) @@ -78,7 +80,7 @@ class Run: self.__log_end(self.exitcode) self.__check_exitcode() return outdata - def __run_noio(self, exitcode = True): + def __run_noio(self): """Run without captured IO.""" assert self.__indata == None self.__log_start() @@ -88,11 +90,13 @@ class Run: except OSError, e: raise self.exc('%s failed: %s' % (self.__cmd[0], e)) self.__log_end(self.exitcode) - if exitcode: - self.__check_exitcode() + self.__check_exitcode() def returns(self, retvals): self.__good_retvals = retvals return self + def discard_exitcode(self): + self.__good_retvals = None + return self def discard_stderr(self, discard = True): self.__discard_stderr = discard return self @@ -129,9 +133,9 @@ class Run: else: raise self.exc('%s produced %d lines, expected 1' % (self.__cmd[0], len(outlines))) - def run(self, exitcode = True): + def run(self): """Just run, with no IO redirection.""" - self.__run_noio(exitcode = exitcode) + self.__run_noio() def xargs(self, xargs): """Just run, with no IO redirection. The extra arguments are appended to the command line a few at a time; the command is -- 2.11.0