summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@intel.com>2017-03-01 12:07:44 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-03-01 23:27:11 +0000
commit726832895de0e8d98fea8dde422e46b249a7bcc9 (patch)
tree564ea19b16d67786643df7dd519dba6c67437052 /meta/lib/oeqa
parent30ad3624176f8928bc6cf54d47b0e4d38c3c64e5 (diff)
downloadpoky-726832895de0e8d98fea8dde422e46b249a7bcc9.tar.gz
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>
Diffstat (limited to 'meta/lib/oeqa')
-rw-r--r--meta/lib/oeqa/oetest.py9
-rw-r--r--meta/lib/oeqa/utils/subprocesstweak.py19
2 files changed, 19 insertions, 9 deletions
diff --git a/meta/lib/oeqa/oetest.py b/meta/lib/oeqa/oetest.py
index a89bd117c0..1dad763ff1 100644
--- a/meta/lib/oeqa/oetest.py
+++ b/meta/lib/oeqa/oetest.py
@@ -135,15 +135,6 @@ class oeRuntimeTest(oeTest):
135 if status != 0: 135 if status != 0:
136 return status 136 return status
137 137
138class OETestCalledProcessError(subprocess.CalledProcessError):
139 def __str__(self):
140 if hasattr(self, "stderr"):
141 return "Command '%s' returned non-zero exit status %d with output %s and stderr %s" % (self.cmd, self.returncode, self.output, self.stderr)
142 else:
143 return "Command '%s' returned non-zero exit status %d with output %s" % (self.cmd, self.returncode, self.output)
144
145subprocess.CalledProcessError = OETestCalledProcessError
146
147def getmodule(pos=2): 138def getmodule(pos=2):
148 # stack returns a list of tuples containg frame information 139 # stack returns a list of tuples containg frame information
149 # First element of the list the is current frame, caller is 1 140 # First element of the list the is current frame, caller is 1
diff --git a/meta/lib/oeqa/utils/subprocesstweak.py b/meta/lib/oeqa/utils/subprocesstweak.py
new file mode 100644
index 0000000000..1f7d11b55c
--- /dev/null
+++ b/meta/lib/oeqa/utils/subprocesstweak.py
@@ -0,0 +1,19 @@
1import subprocess
2
3class OETestCalledProcessError(subprocess.CalledProcessError):
4 def __str__(self):
5 def strify(o):
6 if isinstance(o, bytes):
7 return o.decode("utf-8", errors="replace")
8 else:
9 return o
10
11 s = "Command '%s' returned non-zero exit status %d" % (self.cmd, self.returncode)
12 if hasattr(self, "output") and self.output:
13 s = s + "\nStandard Output: " + strify(self.output)
14 if hasattr(self, "stderr") and self.stderr:
15 s = s + "\nStandard Error: " + strify(self.stderr)
16 return s
17
18def errors_have_output():
19 subprocess.CalledProcessError = OETestCalledProcessError