fix: only raise exception on command failure with stderr output
- Change run() function to check returncode before raising exception - Use re.search() instead of re.match() for ignore pattern matching - Fix false positive errors from waydroid informational stderr messages Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
+5
-5
@@ -33,16 +33,16 @@ def get_data_dir():
|
|||||||
# execute on host
|
# execute on host
|
||||||
def run(args: list, env: Optional[str] = None, ignore: Optional[str] = None):
|
def run(args: list, env: Optional[str] = None, ignore: Optional[str] = None):
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
args=args,
|
args=args,
|
||||||
env=env,
|
env=env,
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.PIPE
|
stderr=subprocess.PIPE
|
||||||
)
|
)
|
||||||
|
|
||||||
# print(result.stdout.decode())
|
# print(result.stdout.decode())
|
||||||
if result.stderr:
|
if result.returncode != 0 and result.stderr:
|
||||||
error = result.stderr.decode("utf-8")
|
error = result.stderr.decode("utf-8")
|
||||||
if ignore and re.match(ignore, error):
|
if ignore and re.search(ignore, error):
|
||||||
return result
|
return result
|
||||||
Logger.error(error)
|
Logger.error(error)
|
||||||
raise subprocess.CalledProcessError(
|
raise subprocess.CalledProcessError(
|
||||||
|
|||||||
Reference in New Issue
Block a user