From e643703418502ccd3b530b41748edf21ea56bb0c Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 15 Mar 2021 10:59:24 +0100 Subject: [PATCH] tests/client: run "test-client.py" also for meson --- Makefile.am | 14 +++----- contrib/scripts/nm-ci-run.sh | 5 +++ src/meson.build | 1 + src/tests/client/meson.build | 12 +++++++ src/tests/client/test-client.sh | 59 +++++++++++++++++++++++++++++++++ 5 files changed, 81 insertions(+), 10 deletions(-) create mode 100644 src/tests/client/meson.build create mode 100755 src/tests/client/test-client.sh diff --git a/Makefile.am b/Makefile.am index 41df1ab475..cff14b7605 100644 --- a/Makefile.am +++ b/Makefile.am @@ -5185,27 +5185,21 @@ endif ############################################################################### check-local-tests-client: src/nmcli/nmcli src/tests/client/test-client.py - mkdir -p "$(builddir)/src/tests/client/" - "$(builddir)/src/nmcli/nmcli" --version - GI_TYPELIB_PATH="$(abs_builddir)/src/libnm-client-impl$${GI_TYPELIB_PATH:+:$$GI_TYPELIB_PATH}" \ - LD_LIBRARY_PATH="$(abs_builddir)/src/libnm-client-impl/.libs$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH}" \ - NM_TEST_CLIENT_BUILDDIR="$(abs_builddir)" \ - NM_TEST_CLIENT_NMCLI_PATH=src/nmcli/nmcli \ - "$(PYTHON)" \ - $(srcdir)/src/tests/client/test-client.py -v &> "$(builddir)/src/tests/client/test-client.log" && r=ok; \ - cat "$(builddir)/src/tests/client/test-client.log"; \ - test "$$r" = ok + "$(srcdir)/src/tests/client/test-client.sh" "$(builddir)" "$(srcdir)" "$(PYTHON)" check_local += check-local-tests-client CLEANFILES += src/tests/client/test-client.log EXTRA_DIST += \ + src/tests/client/test-client.sh \ src/tests/client/test-client.py \ src/tests/client/test-client.check-on-disk/test_001.expected \ src/tests/client/test-client.check-on-disk/test_002.expected \ src/tests/client/test-client.check-on-disk/test_003.expected \ src/tests/client/test-client.check-on-disk/test_004.expected \ + \ + src/tests/client/meson.build \ $(NULL) ############################################################################### diff --git a/contrib/scripts/nm-ci-run.sh b/contrib/scripts/nm-ci-run.sh index 14f2989a7a..00adba85e1 100755 --- a/contrib/scripts/nm-ci-run.sh +++ b/contrib/scripts/nm-ci-run.sh @@ -222,6 +222,8 @@ run_meson() { _WITH_WERROR_VAL="" fi meson build \ + \ + -Dprefix="$PWD/INST" \ \ --warnlevel 2 \ $_WITH_WERROR_VAL \ @@ -257,7 +259,10 @@ run_meson() { \ #end + export NM_TEST_CLIENT_CHECK_L10N=1 + ninja -C build + ninja -C build install ninja -C build test if _with_valgrind; then diff --git a/src/meson.build b/src/meson.build index 75dcbbfb1c..b7aa4dcde1 100644 --- a/src/meson.build +++ b/src/meson.build @@ -116,5 +116,6 @@ if enable_tests if enable_nm_cloud_setup subdir('nm-cloud-setup/tests') endif + subdir('tests/client') subdir('contrib/tests') endif diff --git a/src/tests/client/meson.build b/src/tests/client/meson.build new file mode 100644 index 0000000000..b2e455bbbd --- /dev/null +++ b/src/tests/client/meson.build @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +test( + 'check-local-tests-client', + find_program(join_paths(source_root, 'src/tests/client/test-client.sh')), + args: [ + build_root, + source_root, + python.path(), + ], + timeout: 120, +) diff --git a/src/tests/client/test-client.sh b/src/tests/client/test-client.sh new file mode 100755 index 0000000000..f6b6418555 --- /dev/null +++ b/src/tests/client/test-client.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +set -e + +die() { + printf '%s\n' "$@" + exit 1 +} + +if [ "$2" != "" ]; then + SRCDIR="$(realpath "$2")" +else + SRCDIR="$(realpath "$(dirname "$BASH_SOURCE")/../../..")" +fi + +if [ "$1" != "" ]; then + BUILDDIR="$(realpath "$1")" +elif test -d "$SRCDIR/build" ; then + BUILDDIR="$(realpath "$SRCDIR/build")" +else + BUILDDIR="$SRCDIR" +fi + +test -d "$BUILDDIR" || die "BUILDDIR \"$BUILDDIR\" does not exist?" +test -d "$SRCDIR" || die "SRCDIR \"$SRCDIR\" does not exist?" + +if [ "$3" != "" ]; then + PYTHON="$3" +elif [ "$PYTHON" == "" ]; then + PYTHON="$(command -v python)" || die "python not found?" +fi + +test -f "$BUILDDIR/src/nmcli/nmcli" || die "\"$BUILDDIR/src/nmcli/nmcli\" does not exist?" + +if test -f "$BUILDDIR/src/libnm-client-impl/.libs/libnm.so" ; then + LIBDIR="$BUILDDIR/src/libnm-client-impl/.libs" +elif test -f "$BUILDDIR/src/libnm-client-impl/libnm.so" ; then + LIBDIR="$BUILDDIR/src/libnm-client-impl" +else + die "libnm.so does not exist under expected paths in \"$BUILDDIR/src/libnm-client-impl/{.,.libs}/\"" +fi + +mkdir -p "$BUILDDIR/src/tests/client/" || die "failure to create build output directory \"$BUILDDIR/src/tests/client/\"" + +export NM_TEST_CLIENT_NMCLI_PATH="$BUILDDIR/src/nmcli/nmcli" +export GI_TYPELIB_PATH="$BUILDDIR/src/libnm-client-impl${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}" +export LD_LIBRARY_PATH="$LIBDIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" +export NM_TEST_CLIENT_BUILDDIR="$BUILDDIR" + +# we first collect all the output in "test-client.log" and print it at once +# afterwards. The only reason is that when you run with `make -j` that the +# test output is grouped together. + +r="" +"$PYTHON" "$SRCDIR/src/tests/client/test-client.py" -v &> "$BUILDDIR/src/tests/client/test-client.log" && r=ok + +cat "$BUILDDIR/src/tests/client/test-client.log" + +test "$r" = ok || die "test-client.py failed!!"