summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/utils/commands.py
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2014-04-30 13:32:04 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-04-30 21:52:33 +0100
commit3a4bb1aa604189618cc16c702efb9647fbe86108 (patch)
tree2f8976d41de48e19ff06d77ac71b4ada6d3bc2cf /meta/lib/oeqa/utils/commands.py
parent9e7b0ca3832ce7ea9826e5d90ec9f10a7772099e (diff)
downloadpoky-3a4bb1aa604189618cc16c702efb9647fbe86108.tar.gz
oeqa: add proper handling for command errors where needed
For use outside of tests themselves, we want a better error than AssertionError, so create one and allow us to request it when calling runCmd(). This enables us to avoid tracebacks during master image operations if the power control command fails. (From OE-Core rev: 89868383685091b0d3723fb8f29590f3f6610078) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa/utils/commands.py')
-rw-r--r--meta/lib/oeqa/utils/commands.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py
index 9b42620610..7637b9def8 100644
--- a/meta/lib/oeqa/utils/commands.py
+++ b/meta/lib/oeqa/utils/commands.py
@@ -1,4 +1,4 @@
1# Copyright (c) 2013 Intel Corporation 1# Copyright (c) 2013-2014 Intel Corporation
2# 2#
3# Released under the MIT license (see COPYING.MIT) 3# Released under the MIT license (see COPYING.MIT)
4 4
@@ -14,6 +14,7 @@ import signal
14import subprocess 14import subprocess
15import threading 15import threading
16import logging 16import logging
17from oeqa.utils import CommandError
17 18
18class Command(object): 19class Command(object):
19 def __init__(self, command, bg=False, timeout=None, data=None, **options): 20 def __init__(self, command, bg=False, timeout=None, data=None, **options):
@@ -84,8 +85,8 @@ class Command(object):
84class Result(object): 85class Result(object):
85 pass 86 pass
86 87
87def runCmd(command, ignore_status=False, timeout=None, **options):
88 88
89def runCmd(command, ignore_status=False, timeout=None, assert_error=True, **options):
89 result = Result() 90 result = Result()
90 91
91 cmd = Command(command, timeout=timeout, **options) 92 cmd = Command(command, timeout=timeout, **options)
@@ -97,7 +98,10 @@ def runCmd(command, ignore_status=False, timeout=None, **options):
97 result.pid = cmd.process.pid 98 result.pid = cmd.process.pid
98 99
99 if result.status and not ignore_status: 100 if result.status and not ignore_status:
100 raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command, result.status, result.output)) 101 if assert_error:
102 raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command, result.status, result.output))
103 else:
104 raise CommandError(result.status, command, result.output)
101 105
102 return result 106 return result
103 107