mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
oeqa: add output to subprocess exceptions
Out of the box subprocess.CalledProcessError.__str__() just displays the command and exit code, which isn't very useful for debugging. Add a function to oeqa.utils.subprocesstweak to monkey-patch __str__() so that it can also display the value of stdout and stderr. (From OE-Core rev: c55401ba1646202fa36e4973b05dbacaa146cb16) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
30ad362417
commit
726832895d
|
@ -135,15 +135,6 @@ class oeRuntimeTest(oeTest):
|
|||
if status != 0:
|
||||
return status
|
||||
|
||||
class OETestCalledProcessError(subprocess.CalledProcessError):
|
||||
def __str__(self):
|
||||
if hasattr(self, "stderr"):
|
||||
return "Command '%s' returned non-zero exit status %d with output %s and stderr %s" % (self.cmd, self.returncode, self.output, self.stderr)
|
||||
else:
|
||||
return "Command '%s' returned non-zero exit status %d with output %s" % (self.cmd, self.returncode, self.output)
|
||||
|
||||
subprocess.CalledProcessError = OETestCalledProcessError
|
||||
|
||||
def getmodule(pos=2):
|
||||
# stack returns a list of tuples containg frame information
|
||||
# First element of the list the is current frame, caller is 1
|
||||
|
|
19
meta/lib/oeqa/utils/subprocesstweak.py
Normal file
19
meta/lib/oeqa/utils/subprocesstweak.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
import subprocess
|
||||
|
||||
class OETestCalledProcessError(subprocess.CalledProcessError):
|
||||
def __str__(self):
|
||||
def strify(o):
|
||||
if isinstance(o, bytes):
|
||||
return o.decode("utf-8", errors="replace")
|
||||
else:
|
||||
return o
|
||||
|
||||
s = "Command '%s' returned non-zero exit status %d" % (self.cmd, self.returncode)
|
||||
if hasattr(self, "output") and self.output:
|
||||
s = s + "\nStandard Output: " + strify(self.output)
|
||||
if hasattr(self, "stderr") and self.stderr:
|
||||
s = s + "\nStandard Error: " + strify(self.stderr)
|
||||
return s
|
||||
|
||||
def errors_have_output():
|
||||
subprocess.CalledProcessError = OETestCalledProcessError
|
Loading…
Reference in New Issue
Block a user