summaryrefslogtreecommitdiff
path: root/tests
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 /tests
parent490421c6a89f918dbb75ae14efb66a1ce1fe1399 (diff)
downloaddconf-7bcd1b2acf965b3170d8340a7eced0eabe438ccf.tar.gz
tests: factor out abicheck from gsettings
This will allow it to be used for other binaries
Diffstat (limited to 'tests')
-rwxr-xr-xtests/abicheck.sh33
-rw-r--r--tests/meson.build16
2 files changed, 49 insertions, 0 deletions
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)