summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am6
-rw-r--r--meson.build5
-rwxr-xr-xtools/check-vapi.sh25
3 files changed, 36 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index 7fc7804775..67bcdde132 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5726,6 +5726,11 @@ EXTRA_DIST += \
vapi/libnm.deps \
vapi/meson.build
+check-local-vapi:
+ $(srcdir)/tools/check-vapi.sh
+
+check_local += check-local-vapi
+
###############################################################################
girdir = $(datadir)/gir-1.0
@@ -5793,6 +5798,7 @@ EXTRA_DIST += \
tools/check-compare-generated.sh \
tools/check-gitlab-ci.sh \
tools/check-tree.sh \
+ tools/check-vapi.sh \
tools/create-exports-NetworkManager.sh \
tools/debug-helper.py \
tools/meson-post-install.sh \
diff --git a/meson.build b/meson.build
index b79240efc0..1327513b4c 100644
--- a/meson.build
+++ b/meson.build
@@ -941,6 +941,11 @@ if enable_vapi
subdir('vapi')
endif
+test(
+ 'check-vapi',
+ find_program(join_paths(source_root, 'tools', 'check-vapi.sh')),
+)
+
subdir('examples/C/glib')
enable_qt = get_option('qt')
diff --git a/tools/check-vapi.sh b/tools/check-vapi.sh
new file mode 100755
index 0000000000..da640cfd0f
--- /dev/null
+++ b/tools/check-vapi.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+set -e
+
+die() {
+ printf "%s\n" "$*" >&2
+ exit 1
+}
+
+cd "$(dirname "$(readlink -f "$0")")/.." || die "cannot change to srcdir"
+
+VAPI=./vapi/NM-1.0.metadata
+
+for s in $(grep -r -h '#define \+\<NM_SETTING_.*SETTING_NAME\>' -- ./src/libnm-core-public/ \
+ | sed -n 's/^#define \+NM_\(SETTING_[A-Z0-9_]\+\)_SETTING_NAME\> \+.*/\1/p') ; do
+ grep -q "^$s" -- "$VAPI" || die "didn't see '$s' in \"$VAPI\""
+done
+
+for f in ./src/libnm-client-public/nm-device-*.h ; do
+ D=( $(sed -n 's/^#define \+NM_IS_DEVICE_\([A-Z0-9_]\+\)_CLASS\>(.*/\1/p' "$f") )
+ test ${#D[@]} = 1 || die "did not detect device in \"$f\""
+ s="${D[0]}"
+ c="$(grep -c "^DEVICE_${s}_\* *parent=" -- "$VAPI")"
+ test "$c" = 1 || die "didn't see device '$s' in \"$VAPI\""
+done