From: Karel Zak Date: Wed, 2 Oct 2024 10:35:48 +0000 (+0200) Subject: tests: add findmnt --kernel=listmount X-Git-Tag: v2.42-start~97^2~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1f6eaa2a178ecd97a12454605e7d346b47631519;p=thirdparty%2Futil-linux.git tests: add findmnt --kernel=listmount * add listmount() and statmount() check to test_sysinfo * check for statmount fields by findmnt Signed-off-by: Karel Zak --- diff --git a/tests/helpers/test_sysinfo.c b/tests/helpers/test_sysinfo.c index 76983bce6..f23f9111a 100644 --- a/tests/helpers/test_sysinfo.c +++ b/tests/helpers/test_sysinfo.c @@ -28,6 +28,8 @@ #include #include +#include "c.h" + #ifdef __linux__ # include # include "mount-api-utils.h" @@ -140,6 +142,31 @@ static int hlp_fsopen_ok(void) return 0; } +static int hlp_statmount_ok(void) +{ +#ifdef HAVE_STATMOUNT_API + errno = 0; + ul_statmount(0, 0, 0, NULL, 0, 0); +#else + errno = ENOSYS; +#endif + printf("%d\n", errno != ENOSYS); + return 0; +} + +static int hlp_listmount_ok(void) +{ +#ifdef HAVE_STATMOUNT_API + uint64_t dummy; + errno = 0; + ul_listmount(LSMT_ROOT, 0, 0, &dummy, 1, LISTMOUNT_REVERSE); +#else + errno = ENOSYS; +#endif + printf("%d\n", errno != ENOSYS); + return 0; +} + static int hlp_sz_time(void) { printf("%zu\n", sizeof(time_t)); @@ -191,6 +218,8 @@ static const mntHlpfnc hlps[] = { "wcsspn-ok", hlp_wcsspn_ok }, { "enotty-ok", hlp_enotty_ok }, { "fsopen-ok", hlp_fsopen_ok }, + { "statmount-ok", hlp_statmount_ok }, + { "listmount-ok", hlp_listmount_ok }, { "sz(time_t)", hlp_sz_time }, { "ns-gettype-ok", hlp_get_nstype_ok }, { "ns-getuserns-ok", hlp_get_userns_ok }, diff --git a/tests/ts/findmnt/listmount b/tests/ts/findmnt/listmount new file mode 100755 index 000000000..769b460a9 --- /dev/null +++ b/tests/ts/findmnt/listmount @@ -0,0 +1,70 @@ +#!/bin/bash + +# This file is part of util-linux. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +TS_TOPDIR="${0%/*}/../.." +TS_DESC="listmount & statmount" + +. "$TS_TOPDIR"/functions.sh +ts_init "$*" + +ts_check_test_command "$TS_CMD_FINDMNT" + +[ "$("$TS_HELPER_SYSINFO" statmount-ok)" = "1" ] || ts_skip "no statmount" +[ "$("$TS_HELPER_SYSINFO" listmount-ok)" = "1" ] || ts_skip "no listmount" + +function check_field { + local name="$1" + + data=$( $TS_CMD_FINDMNT --noheadings --kernel=listmount --output "$name" --target /proc ) + [ -n "$data" ] || echo "$name empty" +} + + +ts_init_subtest "target" +check_field "TARGET" >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +ts_init_subtest "vfs-options" +check_field "VFS-OPTIONS" >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +ts_init_subtest "fs-options" +check_field "FS-OPTIONS" >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +ts_init_subtest "options" +check_field "OPTIONS" >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +ts_init_subtest "fstype" +check_field "FSTYPE" >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +ts_init_subtest "propagation" +check_field "PROPAGATION" >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +ts_init_subtest "fsroot" +check_field "FSROOT" >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +ts_init_subtest "parent" +check_field "PARENT" >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +ts_init_subtest "id" +check_field "ID" >> $TS_OUTPUT 2>> $TS_ERRLOG +ts_finalize_subtest + +ts_finalize