summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Playfair Cal <daniel.playfair.cal@gmail.com>2020-05-04 16:44:27 +1000
committerDaniel Playfair Cal <daniel.playfair.cal@gmail.com>2020-12-19 12:15:21 +1100
commit7bcd1b2acf965b3170d8340a7eced0eabe438ccf (patch)
tree92f0e7395b07776b28f243ae943e9c3378afe443
parent490421c6a89f918dbb75ae14efb66a1ce1fe1399 (diff)
downloaddconf-7bcd1b2acf965b3170d8340a7eced0eabe438ccf.tar.gz
tests: factor out abicheck from gsettings
This will allow it to be used for other binaries
-rwxr-xr-xgsettings/abicheck.sh26
-rw-r--r--gsettings/meson.build14
-rw-r--r--gsettings/symbols.txt3
-rwxr-xr-xtests/abicheck.sh33
-rw-r--r--tests/meson.build16
5 files changed, 52 insertions, 40 deletions
diff --git a/gsettings/abicheck.sh b/gsettings/abicheck.sh
deleted file mode 100755
index 1dca6ea..0000000
--- a/gsettings/abicheck.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-# The following checks that gsettings/libdconfsettings.so only has
-# dconf_* symbols.
-#
-# We also make sure to ignore gcov symbols included when building with
-# --coverage, which usually means the following:
-#
-# __gcov_error_file
-# __gcov_master
-# __gcov_sort_n_vals
-# __gcov_var
-#
-# And starting with gcc-9, also this one:
-#
-# mangle_path
-
-${NM:-nm} --dynamic --defined-only $GSETTINGS_LIB > public-abi
-
-test "`\
- cat public-abi | \
- cut -f 3 -d ' ' | \
- grep -v ^_ | \
- grep -v ^mangle_path | \
- grep -v ^g_io_module | \
- wc -l`" -eq 0 && rm public-abi
diff --git a/gsettings/meson.build b/gsettings/meson.build
index a28892d..ee0f723 100644
--- a/gsettings/meson.build
+++ b/gsettings/meson.build
@@ -16,17 +16,3 @@ libdconf_settings = shared_library(
install: true,
install_dir: gio_module_dir,
)
-
-envs = test_env + [
- 'G_TEST_SRCDIR=' + meson.current_source_dir(),
- 'G_TEST_BUILDDIR=' + meson.current_build_dir(),
- 'GSETTINGS_LIB=' + libdconf_settings.full_path(),
-]
-
-unit_test = 'abicheck'
-
-test(
- unit_test,
- find_program(unit_test + '.sh'),
- env: envs,
-)
diff --git a/gsettings/symbols.txt b/gsettings/symbols.txt
new file mode 100644
index 0000000..0ac9e5e
--- /dev/null
+++ b/gsettings/symbols.txt
@@ -0,0 +1,3 @@
+g_io_module_load
+g_io_module_query
+g_io_module_unload
diff --git a/tests/abicheck.sh b/tests/abicheck.sh
new file mode 100755
index 0000000..49291bd
--- /dev/null
+++ b/tests/abicheck.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+# The following checks that a given binary only defines the symbols
+# specified
+#
+# We also make sure to ignore gcov symbols included when building with
+# --coverage, which usually means the following:
+#
+# __gcov_error_file
+# __gcov_master
+# __gcov_sort_n_vals
+# __gcov_var
+#
+# And starting with gcc-9, also this one:
+#
+# mangle_path
+
+set -x
+
+if test $# != 2; then
+ echo " Usage: $0 <binary> <symbol_file>"
+ echo " symbol_file is a file where each line is the name of an exported symbol"
+ exit 1
+fi
+
+BINARY="$1"
+SYMBOL_FILE="$2"
+
+${NM:-nm} --dynamic --defined-only "$BINARY" | \
+ cut -f 3 -d ' ' | \
+ grep -v ^_ | \
+ grep -v ^mangle_path | \
+ diff "$SYMBOL_FILE" -
diff --git a/tests/meson.build b/tests/meson.build
index 0d4260f..0992435 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -48,6 +48,22 @@ foreach unit_test: unit_tests
test(unit_test[0], exe, is_parallel: false, env: envs)
endforeach
+symbol_test = find_program('abicheck.sh')
+
+abi_tests = [
+ ['gsettings', libdconf_settings, files('../gsettings/symbols.txt')[0]]
+]
+
+foreach abi_test: abi_tests
+ test(
+ abi_test[0],
+ symbol_test,
+ env: envs,
+ args: [abi_test[1].full_path(), abi_test[2]],
+ )
+endforeach
+
+
python3 = find_program('python3', required: false)
dbus_daemon = find_program('dbus-daemon', required: false)