diff options
Diffstat (limited to 'meta/lib/oeqa/utils')
-rw-r--r-- | meta/lib/oeqa/utils/__init__.py | 12 | ||||
-rw-r--r-- | meta/lib/oeqa/utils/commands.py | 10 |
2 files changed, 19 insertions, 3 deletions
diff --git a/meta/lib/oeqa/utils/__init__.py b/meta/lib/oeqa/utils/__init__.py index 8eda92763c..2260046026 100644 --- a/meta/lib/oeqa/utils/__init__.py +++ b/meta/lib/oeqa/utils/__init__.py | |||
@@ -1,3 +1,15 @@ | |||
1 | # Enable other layers to have modules in the same named directory | 1 | # Enable other layers to have modules in the same named directory |
2 | from pkgutil import extend_path | 2 | from pkgutil import extend_path |
3 | __path__ = extend_path(__path__, __name__) | 3 | __path__ = extend_path(__path__, __name__) |
4 | |||
5 | |||
6 | # Borrowed from CalledProcessError | ||
7 | |||
8 | class CommandError(Exception): | ||
9 | def __init__(self, retcode, cmd, output = None): | ||
10 | self.retcode = retcode | ||
11 | self.cmd = cmd | ||
12 | self.output = output | ||
13 | def __str__(self): | ||
14 | return "Command '%s' returned non-zero exit status %d with output: %s" % (self.cmd, self.retcode, self.output) | ||
15 | |||
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 | |||
14 | import subprocess | 14 | import subprocess |
15 | import threading | 15 | import threading |
16 | import logging | 16 | import logging |
17 | from oeqa.utils import CommandError | ||
17 | 18 | ||
18 | class Command(object): | 19 | class 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): | |||
84 | class Result(object): | 85 | class Result(object): |
85 | pass | 86 | pass |
86 | 87 | ||
87 | def runCmd(command, ignore_status=False, timeout=None, **options): | ||
88 | 88 | ||
89 | def 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 | ||