[libcamera-devel] [PATCH 1/2] tests: v4l2_compat: Prettify failure output
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Jul 10 17:46:04 CEST 2020
Hi Paul,
Thank you for the patch.
On Fri, Jul 10, 2020 at 11:15:07PM +0900, Paul Elder wrote:
> 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
>
> Move printing of "failure" to the print_output_arr(), where the failed
> test output is printed, to prettify the output upon failure.
>
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> ---
> test/v4l2_compat/v4l2_compat_test.py | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/test/v4l2_compat/v4l2_compat_test.py b/test/v4l2_compat/v4l2_compat_test.py
> index 99b3d5a..8a8e59e 100755
> --- a/test/v4l2_compat/v4l2_compat_test.py
> +++ b/test/v4l2_compat/v4l2_compat_test.py
> @@ -55,6 +55,7 @@ def extract_result(result):
>
>
> def print_output_arr(output_arr):
> + print('failed')
> print('\n'.join(output_arr))
>
>
> @@ -135,7 +136,6 @@ def main(argv):
> ret = test_v4l2_compliance(v4l2_compliance, v4l2_compat, device, driver)
> if ret == TestFail:
> failed.append(device)
> - print('failed')
> else:
> print('success')
I'm not a big fan of the resulting asymmetry. Would the following make
sense (not fully tested) ?
diff --git a/test/v4l2_compat/v4l2_compat_test.py b/test/v4l2_compat/v4l2_compat_test.py
index 99b3d5a3e414..8aca22203e46 100755
--- a/test/v4l2_compat/v4l2_compat_test.py
+++ b/test/v4l2_compat/v4l2_compat_test.py
@@ -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
> drivers_tested[driver] = True
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list