[libcamera-devel] [PATCH 2/2] test: v4l2_compat_test: Fix v4l2-compliance version parsing

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Aug 27 22:58:49 CEST 2021


On Fri, Aug 27, 2021 at 02:58:15PM +0300, Laurent Pinchart wrote:
> On Fri, Aug 27, 2021 at 03:25:21PM +0900, Paul Elder wrote:
> > v4l2-compliance changed their version string:
> > 
> > v4l2-compliance 1.21.0-4618
> > v4l2-compliance SHA: cc211b76476aca2c072ffa83a9b003957d5f3909, 64 bits, 64-bit time_t
> > 
> > v4l2-compliance 1.21.0-4838, 64 bits, 64-bit time_t
> > 
> > The current parsing takes the last result of split, which works for the
> > former, but not the latter. Take the second result of split instead, and
> > strip away any commas.
> > 
> > Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Tested-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> 
> However, the unit test now fails for me:
> 
> stderr:
> Traceback (most recent call last):
>   File "/home/laurent/src/iob/oss/libcamera/libcamera/test/v4l2_compat/v4l2_compat_test.py", line 159, in <module>
>     sys.exit(main(sys.argv))
>   File "/home/laurent/src/iob/oss/libcamera/libcamera/test/v4l2_compat/v4l2_compat_test.py", line 124, in main
>     driver = grep('Driver name', out)[0].split(':')[-1].strip()
> IndexError: list index out of range
> 
> This should be fixed before merging this patch. I'll have a quick look.

This was caused by ASan. "[PATCH] test: v4l2_compat: Disable test when
ASan is enabled" works around it. If anyone can find a way to LD_PRELOAD
libasan instead, that would be nice.

Now I can reproduce the v4l2-compliance failure itself :-) Here are the
failures for my UVC camera:

Format ioctls (Input 0):
                fail: v4l2-test-formats.cpp(263): fmtdesc.description mismatch: was 'Video Format Description', expected 'Motion-JPEG'
        test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: FAIL
        test VIDIOC_G/S_PARM: OK (Not Supported)
        test VIDIOC_G_FBUF: OK (Not Supported)
                fail: v4l2-test-formats.cpp(460): pixelformat 47504a4d (MJPG) for buftype 1 not reported by ENUM_FMT
        test VIDIOC_G_FMT: FAIL
                fail: v4l2-test-formats.cpp(460): pixelformat 47504a4d (MJPG) for buftype 1 not reported by ENUM_FMT
        test VIDIOC_TRY_FMT: FAIL
                fail: v4l2-test-formats.cpp(460): pixelformat 47504a4d (MJPG) for buftype 1 not reported by ENUM_FMT
        test VIDIOC_S_FMT: FAIL

And for vimc:

Format ioctls (Input 0):
                fail: v4l2-test-formats.cpp(263): fmtdesc.description mismatch: was 'Video Format Description', expected '24-bit RGB 8-8-8'
        test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: FAIL
        test VIDIOC_G/S_PARM: OK (Not Supported)
        test VIDIOC_G_FBUF: OK (Not Supported)
                fail: v4l2-test-formats.cpp(460): pixelformat 33424752 (RGB3) for buftype 1 not reported by ENUM_FMT
        test VIDIOC_G_FMT: FAIL
                fail: v4l2-test-formats.cpp(460): pixelformat 33424752 (RGB3) for buftype 1 not reported by ENUM_FMT
        test VIDIOC_TRY_FMT: FAIL
                fail: v4l2-test-formats.cpp(460): pixelformat 33424752 (RGB3) for buftype 1 not reported by ENUM_FMT
        test VIDIOC_S_FMT: FAIL

> > ---
> > Kieran, can you please check if this works?
> > ---
> >  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 51bfa952..ae892ced 100755
> > --- a/test/v4l2_compat/v4l2_compat_test.py
> > +++ b/test/v4l2_compat/v4l2_compat_test.py
> > @@ -94,7 +94,7 @@ def main(argv):
> >          return TestSkip
> >  
> >      ret, out = run_with_stdout(v4l2_compliance, '--version')
> > -    if ret != 0 or version.parse(out[0].split()[-1]) < MIN_V4L_UTILS_VERSION:
> > +    if ret != 0 or version.parse(out[0].split()[1].replace(',', '')) < MIN_V4L_UTILS_VERSION:
> >          print('v4l2-compliance version >= 1.21.0 required')
> >          return TestSkip
> >  

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list