]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
tests: add libmount VFS test
authorKarel Zak <kzak@redhat.com>
Wed, 15 Jul 2026 11:06:24 +0000 (13:06 +0200)
committerKarel Zak <kzak@redhat.com>
Thu, 16 Jul 2026 08:30:00 +0000 (10:30 +0200)
Add test script that exercises the pluggable VFS I/O operations:

  table-fstab      -- verify vfs_fopen callback for fstab parsing
  table-mountinfo  -- verify vfs_fopen callback for mountinfo parsing
  blkid            -- verify vfs_open/read/lseek/close for device probing

Signed-off-by: Karel Zak <kzak@redhat.com>
tests/expected/libmount/vfs-blkid [new file with mode: 0644]
tests/expected/libmount/vfs-table-fstab [new file with mode: 0644]
tests/expected/libmount/vfs-table-mountinfo [new file with mode: 0644]
tests/ts/libmount/vfs [new file with mode: 0755]

diff --git a/tests/expected/libmount/vfs-blkid b/tests/expected/libmount/vfs-blkid
new file mode 100644 (file)
index 0000000..9eacf1f
--- /dev/null
@@ -0,0 +1,2 @@
+VFS calls: open=1 close=1 read=N write=0 lseek=N
+blkid: DEVICE type=ext2
diff --git a/tests/expected/libmount/vfs-table-fstab b/tests/expected/libmount/vfs-table-fstab
new file mode 100644 (file)
index 0000000..c416168
--- /dev/null
@@ -0,0 +1,3 @@
+VFS: fopen("files/fstab", "re")
+VFS calls: open=0 close=0 read=0 write=0 lseek=0
+table: parsed 11 entries
diff --git a/tests/expected/libmount/vfs-table-mountinfo b/tests/expected/libmount/vfs-table-mountinfo
new file mode 100644 (file)
index 0000000..8b5ac6b
--- /dev/null
@@ -0,0 +1,3 @@
+VFS: fopen("files/mountinfo", "re")
+VFS calls: open=0 close=0 read=0 write=0 lseek=0
+table: parsed 33 entries
diff --git a/tests/ts/libmount/vfs b/tests/ts/libmount/vfs
new file mode 100755 (executable)
index 0000000..af3fecd
--- /dev/null
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+
+# Copyright (C) 2025 Karel Zak <kzak@redhat.com>
+
+TS_TOPDIR="${0%/*}/../.."
+TS_DESC="VFS"
+
+. "$TS_TOPDIR"/functions.sh
+ts_init "$*"
+
+ts_skip_nonroot
+ts_check_prog "mkfs.ext2"
+
+TESTPROG="$TS_HELPER_LIBMOUNT_CONTEXT"
+
+[ -x $TESTPROG ] || ts_skip "test not compiled"
+
+ts_scsi_debug_init dev_size_mb=10
+mkfs.ext2 -F "$TS_DEVICE" &> /dev/null || ts_skip "mkfs.ext2 failed"
+udevadm settle
+
+ts_init_subtest "table-fstab"
+ts_run $TESTPROG --vfs --table "$TS_SELF/files/fstab" &> "$TS_OUTPUT"
+sed -i -e 's,VFS: fopen(".*/files/,VFS: fopen("files/,g' "$TS_OUTPUT"
+ts_finalize_subtest
+
+ts_init_subtest "table-mountinfo"
+ts_run $TESTPROG --vfs --table "$TS_SELF/files/mountinfo" &> "$TS_OUTPUT"
+sed -i -e 's,VFS: fopen(".*/files/,VFS: fopen("files/,g' "$TS_OUTPUT"
+ts_finalize_subtest
+
+ts_init_subtest "blkid"
+ts_run $TESTPROG --vfs --blkid "$TS_DEVICE" &> "$TS_OUTPUT"
+sed -i -e "s,$TS_DEVICE,DEVICE,g" \
+       -e 's,read=[0-9]*,read=N,g' \
+       -e 's,lseek=[0-9]*,lseek=N,g' "$TS_OUTPUT"
+ts_finalize_subtest
+
+ts_finalize