summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-02-28 16:22:13 +0100
committerThomas Haller <thaller@redhat.com>2023-02-28 16:33:07 +0100
commitdd5e769f2480b29e55cd51265ec305ca784e975a (patch)
tree99ef68d0939c6809b7c738bf0b7730aa46c87c9b
parente3ae3b1732964abd2e49c9a12f0b4d3064c56d10 (diff)
downloadNetworkManager-dd5e769f2480b29e55cd51265ec305ca784e975a.tar.gz
build: add test for checking consistency of "nm-autoptr.h"
-rw-r--r--Makefile.am10
-rw-r--r--meson.build5
-rwxr-xr-xtools/check-nm-autoptr.sh26
3 files changed, 39 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am
index 67bcdde132..9109af4c6a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1861,6 +1861,11 @@ nodist_libnminclude_HEADERS += \
EXTRA_DIST += src/libnm-client-public/meson.build
+check-local-nm-autoptr:
+ $(srcdir)/tools/check-nm-autoptr.sh
+
+check_local += check-local-nm-autoptr
+
###############################################################################
noinst_PROGRAMS += src/libnm-core-impl/gen-metadata-nm-settings-libnm-core
@@ -5792,20 +5797,21 @@ EXTRA_DIST += \
\
src/contrib/nm-vpn-editor-plugin-call.h \
\
+ tools/check-compare-generated.sh \
tools/check-config-options.sh \
tools/check-docs.sh \
tools/check-exports.sh \
- tools/check-compare-generated.sh \
tools/check-gitlab-ci.sh \
+ tools/check-nm-autoptr.sh \
tools/check-tree.sh \
tools/check-vapi.sh \
tools/create-exports-NetworkManager.sh \
tools/debug-helper.py \
+ tools/enums-to-docbook.pl \
tools/meson-post-install.sh \
tools/run-nm-test.sh \
tools/test-networkmanager-service.py \
tools/test-sudo-wrapper.sh \
- tools/enums-to-docbook.pl \
\
src/core/settings/plugins/meson.build \
\
diff --git a/meson.build b/meson.build
index 1327513b4c..2f12e13706 100644
--- a/meson.build
+++ b/meson.build
@@ -946,6 +946,11 @@ test(
find_program(join_paths(source_root, 'tools', 'check-vapi.sh')),
)
+test(
+ 'check-nm-autoptr',
+ find_program(join_paths(source_root, 'tools', 'check-nm-autoptr.sh')),
+)
+
subdir('examples/C/glib')
enable_qt = get_option('qt')
diff --git a/tools/check-nm-autoptr.sh b/tools/check-nm-autoptr.sh
new file mode 100755
index 0000000000..466958c89b
--- /dev/null
+++ b/tools/check-nm-autoptr.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+set -e
+
+die() {
+ printf "%s\n" "$*" >&2
+ exit 1
+}
+
+cd "$(dirname "$(readlink -f "$0")")/.." || die "cannot change to srcdir"
+
+AUTOPTR_H=./src/libnm-client-public/nm-autoptr.h
+
+for s in $( sed -n 's/^ *typedef \+struct \+.*[A-Za-z0-9_]\+ \+\(NMSetting[A-Za-z0-9_]\+\)\> *;$/\1/p' ./src/libnm-core-public/nm-core-types.h ) ; do
+ grep -q "^ *G_DEFINE_AUTOPTR_CLEANUP_FUNC *( *\\<$s\\> *, *g_object_unref *)" -- "$AUTOPTR_H" || die "didn't see setting '$s' in \"$AUTOPTR_H\""
+done
+
+for s in $( grep -h -o '\<NMDevice[A-Za-z0-9_]\+\>' ./src/libnm-client-public/nm-device-*.h | sort -u | grep -v 'Class$') ; do
+ case "$s" in
+ NMDeviceModemCapabilities| \
+ NMDeviceWifiCapabilities)
+ continue
+ ;;
+ esac
+ grep -q "^ *G_DEFINE_AUTOPTR_CLEANUP_FUNC *( *\\<$s\\> *, *g_object_unref *)" -- "$AUTOPTR_H" || die "didn't see device '$s' in \"$AUTOPTR_H\""
+done