From: Simon Glass Date: Sun, 3 Jul 2016 15:40:38 +0000 (-0600) Subject: test/py: Provide output from exceptions with RunAndLog() X-Git-Tag: v2016.09-rc1~107 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=86845bf38dbba5fa7499db10ac5ee20f72d3f240;p=oweals%2Fu-boot.git test/py: Provide output from exceptions with RunAndLog() Tests may want to look at the output from running a command, even if it fails (e.g. with a non-zero return code). Provide a means to obtain this. Another approach would be to return a class object containing both the output and the exception, but I'm not sure if that would result in a lot of refactoring. Signed-off-by: Simon Glass Reviewed-by: Teddy Reed --- diff --git a/test/py/multiplexed_log.py b/test/py/multiplexed_log.py index 02c44df883..35a32fb5c0 100644 --- a/test/py/multiplexed_log.py +++ b/test/py/multiplexed_log.py @@ -101,6 +101,7 @@ class RunAndLog(object): self.logfile = logfile self.name = name self.chained_file = chained_file + self.output = None def close(self): """Clean up any resources managed by this object.""" @@ -109,6 +110,9 @@ class RunAndLog(object): def run(self, cmd, cwd=None, ignore_errors=False): """Run a command as a sub-process, and log the results. + The output is available at self.output which can be useful if there is + an exception. + Args: cmd: The command to execute. cwd: The directory to run the command in. Can be None to use the @@ -159,6 +163,9 @@ class RunAndLog(object): self.logfile.write(self, output) if self.chained_file: self.chained_file.write(output) + + # Store the output so it can be accessed if we raise an exception. + self.output = output if exception: raise exception return output