[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