tests: v4l2_compat: Prettify failure output

When a test is being run on a video device, there is output like so:

Testing /dev/video0 with uvcvideo driver...

and when it succeeds, "success" is appended:

Testing /dev/video0 with uvcvideo driver... success

On failure, however, the output of v4l2-compliance is printed before
"failure" is printed, resulting in the first line of the v4l2-compliance
output to be printed on the same line as the message:

Testing /dev/video2 with uvcvideo driver... v4l2-compliance SHA: not available, 64 bits
<v4l2-compliance output>
failure

Refactor the code to make "failure" print before the output of the test,
to prettify the output upon failure.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Paul Elder
2020-07-10 22:51:51 +09:00
parent d76acac30d
commit ce32ca4918
+8 -14
View File
@@ -54,32 +54,25 @@ def extract_result(result):
return ret
def print_output_arr(output_arr):
print('\n'.join(output_arr))
def test_v4l2_compliance(v4l2_compliance, v4l2_compat, device, base_driver):
ret, output = run_with_stdout(v4l2_compliance, '-s', '-d', device, env={'LD_PRELOAD': v4l2_compat})
if ret < 0:
print_output_arr(output)
print(f'Test for {device} terminated due to signal {signal.Signals(-ret).name}')
return TestFail
output.append(f'Test for {device} terminated due to signal {signal.Signals(-ret).name}')
return TestFail, output
result = extract_result(output[-2])
if result['failed'] == 0:
return TestPass
return TestPass, None
# vimc will fail s_fmt because it only supports framesizes that are
# multiples of 3
if base_driver == 'vimc' and result['failed'] == 1:
failures = grep('fail', output)
if re.search('S_FMT cannot handle an invalid format', failures[0]) is None:
print_output_arr(output)
return TestFail
return TestPass
return TestFail, output
return TestPass, None
print_output_arr(output)
return TestFail
return TestFail, output
def main(argv):
@@ -132,10 +125,11 @@ def main(argv):
continue
print(f'Testing {device} with {driver} driver... ', end='')
ret = test_v4l2_compliance(v4l2_compliance, v4l2_compat, device, driver)
ret, msg = test_v4l2_compliance(v4l2_compliance, v4l2_compat, device, driver)
if ret == TestFail:
failed.append(device)
print('failed')
print('\n'.join(msg))
else:
print('success')
drivers_tested[driver] = True