From: Markus Lehtonen Date: Fri, 24 Mar 2017 14:43:24 +0000 (+0200) Subject: oeqa.utils.commands: limit runCmd exception output X-Git-Tag: uninative-1.6~8 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=403dd205828002d6ef4e8b474aedb6082289e22f;p=openembedded-core.git oeqa.utils.commands: limit runCmd exception output Make it possible to limit the length of output lines shown in runCmd exceptions. E.g when running bitbake we easily get thousands of lines of log output, where only the last few (tens) are interesting or relevant when an error occurs. Signed-off-by: Markus Lehtonen Signed-off-by: Richard Purdie --- diff --git a/meta/lib/oeqa/utils/commands.py b/meta/lib/oeqa/utils/commands.py index 6528a98427..cd7a5e3b12 100644 --- a/meta/lib/oeqa/utils/commands.py +++ b/meta/lib/oeqa/utils/commands.py @@ -97,7 +97,8 @@ class Result(object): pass -def runCmd(command, ignore_status=False, timeout=None, assert_error=True, native_sysroot=None, **options): +def runCmd(command, ignore_status=False, timeout=None, assert_error=True, + native_sysroot=None, limit_exc_output=0, **options): result = Result() if native_sysroot: @@ -117,10 +118,16 @@ def runCmd(command, ignore_status=False, timeout=None, assert_error=True, native result.pid = cmd.process.pid if result.status and not ignore_status: + exc_output = result.output + if limit_exc_output > 0: + split = result.output.splitlines() + if len(split) > limit_exc_output: + exc_output = "\n... (last %d lines of output)\n" % limit_exc_output + \ + '\n'.join(split[-limit_exc_output:]) if assert_error: - raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command, result.status, result.output)) + raise AssertionError("Command '%s' returned non-zero exit status %d:\n%s" % (command, result.status, exc_output)) else: - raise CommandError(result.status, command, result.output) + raise CommandError(result.status, command, exc_output) return result