[libcamera-devel] [PATCH 16/16] test: Ensure LIBCAMERA_BASE_PRIVATE isn't public

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Fri Jun 25 11:05:05 CEST 2021


Hi Kieran,

On Fri, Jun 25, 2021 at 02:35:39AM +0100, Kieran Bingham wrote:
> If LIBCAMERA_BASE_PRIVATE is ever exposed on the libcamera public dependencies,
> then the private.h header protection will be circumvented.
> 
> Provide a test which will fail (at compile time) if the LIBCAMERA_BASE_PRIVATE
> define ever leaks to the public dependencies.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
>  test/meson.build    |  1 +
>  test/public-api.cpp | 25 +++++++++++++++++++++++++
>  2 files changed, 26 insertions(+)
>  create mode 100644 test/public-api.cpp
> 
> diff --git a/test/meson.build b/test/meson.build
> index 73eb44d03ad0..2c3e76546fbc 100644
> --- a/test/meson.build
> +++ b/test/meson.build
> @@ -25,6 +25,7 @@ subdir('v4l2_videodevice')
>  
>  public_tests = [
>      ['geometry',                        'geometry.cpp'],
> +    ['public-api',                      'public-api.cpp'],
>      ['signal',                          'signal.cpp'],
>      ['span',                            'span.cpp'],
>  ]
> diff --git a/test/public-api.cpp b/test/public-api.cpp
> new file mode 100644
> index 000000000000..5afce97c6887
> --- /dev/null
> +++ b/test/public-api.cpp
> @@ -0,0 +1,25 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * Copyright (C) 2021, Google Inc.
> + *
> + * public-api.cpp - Public API validation
> + */
> +
> +#include <libcamera/libcamera.h>
> +
> +#include "test.h"
> +
> +class PublicAPITest : public Test
> +{
> +	int run()
> +	{
> +#ifdef LIBCAMERA_BASE_PRIVATE
> +#error "Public Interfaces should not be exposed to LIBCAMERA_BASE_PRIVATE"

s/be exposed to/expose/ ?

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> +		return TestFail;
> +#else
> +		return TestPass;
> +#endif
> +	}
> +};
> +
> +TEST_REGISTER(PublicAPITest)
> -- 
> 2.30.2
> 


More information about the libcamera-devel mailing list