From fdec6a97e85987359fdf26c367b00a1f8ac27be3 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Tue, 28 Feb 2023 07:51:07 +0100 Subject: [PATCH] vapi: add test for consistency of "vapi/NM-1.0.metadata" --- Makefile.am | 6 ++++++ meson.build | 5 +++++ tools/check-vapi.sh | 25 +++++++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100755 tools/check-vapi.sh 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 \+\' -- ./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