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

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Jun 25 03:35:39 CEST 2021


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"
+		return TestFail;
+#else
+		return TestPass;
+#endif
+	}
+};
+
+TEST_REGISTER(PublicAPITest)
-- 
2.30.2



More information about the libcamera-devel mailing list