Merge branch 'as-installed' into 'master'

CI: Run "as-installed" tests with Meson, not just Autotools

Closes #436 and #470

See merge request dbus/dbus!425
This commit is contained in:
Simon McVittie 2023-08-15 12:27:52 +00:00
commit dbe7de00ae
3 changed files with 56 additions and 32 deletions

View file

@ -320,35 +320,6 @@ case "$ci_buildsys" in
LD_LIBRARY_PATH=/usr/local/lib ${make} installcheck || \
maybe_fail_tests
cat test/test-suite.log || :
# Re-run them with gnome-desktop-testing.
# Also, one test needs a finite fd limit to be useful, so we
# can set that here.
env LD_LIBRARY_PATH=/usr/local/lib \
bash -c 'ulimit -S -n 1024; ulimit -H -n 4096; exec "$@"' bash \
gnome-desktop-testing-runner -d /usr/local/share dbus/ || \
maybe_fail_tests
# Some tests benefit from being re-run as non-root, if we were
# not already...
if [ "$(id -u)" = 0 ] && [ "$ci_in_docker" = yes ]; then
sudo -u user \
env LD_LIBRARY_PATH=/usr/local/lib \
gnome-desktop-testing-runner -d /usr/local/share \
dbus/test-dbus-daemon_with_config.test \
|| maybe_fail_tests
fi
# ... while other tests benefit from being re-run as root, if
# we were not already
if [ "$(id -u)" != 0 ]; then
sudo env LD_LIBRARY_PATH=/usr/local/lib \
bash -c 'ulimit -S -n 1024; ulimit -H -n 4096; exec "$@"' bash \
gnome-desktop-testing-runner -d /usr/local/share \
dbus/test-dbus-daemon_with_config.test \
dbus/test-uid-permissions_with_config.test || \
maybe_fail_tests
fi
fi
;;
@ -456,6 +427,13 @@ case "$ci_buildsys" in
esac
set -- -Dmodular_tests=enabled "$@"
# By default, the Meson build would install these into
# /lib/systemd, overwriting any systemd units that might have
# come from the container's base OS. Install into our prefix instead,
# keeping the CI installation separate from the container's base OS
# while still allowing systemd to see the units. (dbus#470)
set -- -Dsystemd_system_unitdir=/usr/local/lib/systemd/system "$@"
set -- -Dsystemd_user_unitdir=/usr/local/lib/systemd/user "$@"
case "$ci_variant" in
(debug)
@ -548,6 +526,10 @@ case "$ci_buildsys" in
fi
fi
# We assume this when we set LD_LIBRARY_PATH for as-installed
# testing, below
set -- "$@" --libdir=lib
# openSUSE's mingw*-meson wrappers are designed for self-contained
# package building, so they include --wrap-mode=nodownload. Switch
# the wrap mode back, so we can use wraps.
@ -562,6 +544,48 @@ case "$ci_buildsys" in
[ "$ci_test" = no ] || meson test --print-errorlogs
DESTDIR=DESTDIR meson install
( cd DESTDIR && find . -ls)
if [ "$ci_sudo" = yes ] && [ "$ci_test" = yes ] && [ "$ci_host" = native ]; then
sudo meson install
fi
;;
esac
case "$ci_buildsys" in
(autotools | meson*)
if [ "$ci_sudo" = yes ] && [ "$ci_test" = yes ] && [ "$ci_host" = native ]; then
sudo env LD_LIBRARY_PATH=/usr/local/lib \
/usr/local/bin/dbus-uuidgen --ensure
# Run "as-installed" tests with gnome-desktop-testing.
# Also, one test needs a finite fd limit to be useful, so we
# can set that here.
env LD_LIBRARY_PATH=/usr/local/lib \
bash -c 'ulimit -S -n 1024; ulimit -H -n 4096; exec "$@"' bash \
gnome-desktop-testing-runner -d /usr/local/share dbus/ || \
maybe_fail_tests
# Some tests benefit from being re-run as non-root, if we were
# not already...
if [ "$(id -u)" = 0 ] && [ "$ci_in_docker" = yes ]; then
sudo -u user \
env LD_LIBRARY_PATH=/usr/local/lib \
gnome-desktop-testing-runner -d /usr/local/share \
dbus/test-dbus-daemon_with_config.test \
|| maybe_fail_tests
fi
# ... while other tests benefit from being re-run as root, if
# we were not already
if [ "$(id -u)" != 0 ]; then
sudo env LD_LIBRARY_PATH=/usr/local/lib \
bash -c 'ulimit -S -n 1024; ulimit -H -n 4096; exec "$@"' bash \
gnome-desktop-testing-runner -d /usr/local/share \
dbus/test-dbus-daemon_with_config.test \
dbus/test-uid-permissions_with_config.test || \
maybe_fail_tests
fi
fi
;;
esac

View file

@ -9,10 +9,10 @@ import sys
from pathlib import Path
for d in sys.argv[1].split(':'):
if os.path.isabs(d) and 'DESTDIR' in os.environ:
if os.path.isabs(d):
p = Path(d)
d = p.relative_to(p.anchor)
dest = os.path.join(os.environ['DESTDIR'], d)
dest = os.path.join(os.environ.get('DESTDIR', '/'), d)
else:
dest = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], d)

View file

@ -14,7 +14,7 @@ link_name, d, pointing_to = sys.argv[1:]
if os.path.isabs(d):
p = Path(d)
d = p.relative_to(p.anchor)
dest = os.path.join(os.environ['DESTDIR'], d)
dest = os.path.join(os.environ.get('DESTDIR', '/'), d)
else:
dest = os.path.join(os.environ['MESON_INSTALL_DESTDIR_PREFIX'], d)