support/tests: print failed command and output on assertRunOK error

Currently, when asserting that a command succeeded, we just capture the
return code of the command. If that is not zero, the assertion fails,
but the error message is not very splicit:
    AssertionError: 1 != 0

Replace the error message with an explicit message that dumps the failed
command, the error code, and the resulting output.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
(cherry picked from commit 44161560dd)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2022.11.x
Yann E. MORIN 2022-12-24 10:18:11 +01:00 committed by Peter Korsgaard
parent 35fa0316c9
commit d475cb6056
1 changed files with 8 additions and 3 deletions

View File

@ -88,7 +88,12 @@ class BRTest(BRConfigTest):
super(BRTest, self).tearDown()
# Run the given 'cmd' with a 'timeout' on the target and
# assert that the command succeeded
# assert that the command succeeded; on error, print the
# faulty command and its output
def assertRunOk(self, cmd, timeout=-1):
_, exit_code = self.emulator.run(cmd, timeout)
self.assertEqual(exit_code, 0)
out, exit_code = self.emulator.run(cmd, timeout)
self.assertEqual(
exit_code,
0,
"\nFailed to run: {}\noutput was:\n{}".format(cmd, ' '+'\n '.join(out))
)