]> git.ipfire.org Git - thirdparty/dracut-ng.git/commitdiff
test: eliminate redundant code by eliminating determine_kernel_version
authorJo Zzsi <jozzsicsataban@gmail.com>
Sun, 20 Jul 2025 15:11:26 +0000 (11:11 -0400)
committerNeal Gompa (ニール・ゴンパ) <ngompa13@gmail.com>
Fri, 1 Aug 2025 15:07:16 +0000 (11:07 -0400)
Both dracut and determine_kernel_version contains a similar code block
for determining linux kernel version.

Instead of duplicating code, let dracut compute the kernel version and
call lsinitrd on the generated initramfs to determine the kernel
version for testing as well.

remove unbound KVERSION variable.

17 files changed:
test/TEST-10-BASIC/test.sh
test/TEST-11-USR-MOUNT/test.sh
test/TEST-12-UEFI/test.sh
test/TEST-13-SYSROOT/test.sh
test/TEST-20-STORAGE/test.sh
test/TEST-26-ENC-RAID-LVM/test.sh
test/TEST-30-DMSQUASH/test.sh
test/TEST-40-SYSTEMD/test.sh
test/TEST-41-FULL-SYSTEMD/test.sh
test/TEST-42-SYSTEMD-INITRD/test.sh
test/TEST-43-KERNEL-INSTALL/test.sh
test/TEST-60-NFS/test.sh
test/TEST-70-ISCSI/test.sh
test/TEST-71-ISCSI-MULTI/test.sh
test/TEST-72-NBD/test.sh
test/run-qemu
test/test-functions

index d1bb621bcf1382948bababe602c534baa80f1d1a..765db7ca5dd8263953b957ed8cd84e658263ef02 100755 (executable)
@@ -24,7 +24,7 @@ test_setup() {
     # create root filesystem
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
 
     dd if=/dev/zero of="$TESTDIR"/root.img bs=200MiB count=1 status=none && sync "$TESTDIR"/root.img
     mkfs.ext4 -q -L dracut -d "$TESTDIR"/dracut.*/initramfs/ "$TESTDIR"/root.img && sync "$TESTDIR"/root.img
index 3c5e3a2eaa72a9c6ec17b143ea0e8c6d70a2d7d7..942d7d3b66e86a70086c674a439f83dfca658c32 100755 (executable)
@@ -51,7 +51,7 @@ test_setup() {
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
         -i ./fstab /etc/fstab \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
     mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
 
     # second, install the files needed to make the root filesystem
@@ -62,7 +62,7 @@ test_setup() {
         --add-confdir test-makeroot \
         -I "mkfs.btrfs" \
         -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
-        -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+        -f "$TESTDIR"/initramfs.makeroot
 
     # Create the blank file to use as a root filesystem
     declare -a disk_args=()
index 25390f5ae2e827864cd537897e08aa0bb2140a22..37bc4c44efd5294a5d9da7e3f3356179b98a6c7b 100755 (executable)
@@ -46,7 +46,7 @@ test_setup() {
     # Create what will eventually be our root filesystem
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
-        "$TESTDIR"/tmp-initramfs.root "$KVERSION"
+        "$TESTDIR"/tmp-initramfs.root
 
     KVERSION=$(determine_kernel_version "$TESTDIR"/tmp-initramfs.root)
 
index f47eba0f4c923ef648edd9e0fa0ef525a070027c..479dca64d494ec6400cb9d2ef8167646fc3abf23 100755 (executable)
@@ -24,7 +24,7 @@ test_setup() {
     # create root filesystem
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
 
     dd if=/dev/zero of="$TESTDIR"/root.img bs=200MiB count=1 status=none && sync "$TESTDIR"/root.img
     mkfs.ext4 -q -L dracut -d "$TESTDIR"/dracut.*/initramfs/ "$TESTDIR"/root.img && sync "$TESTDIR"/root.img
index 8b1c056329f03f2c9a7a22757b576d30ac031fc7..e058e383bcac4c7371aa5821cdea80e8e65bf15f 100755 (executable)
@@ -116,7 +116,7 @@ test_setup() {
     # Create what will eventually be our root filesystem onto an overlay
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
     mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
 
     # pass enviroment variables to make the root filesystem
@@ -136,7 +136,7 @@ test_setup() {
         $(if command -v cryptsetup > /dev/null; then echo "-a crypt -I cryptsetup"; fi) \
         $(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; else echo "-I mkfs.${TEST_FSTYPE} --add-drivers ${TEST_FSTYPE}"; fi) \
         -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
-        -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+        -f "$TESTDIR"/initramfs.makeroot
 
     # LVM
     test_makeroot "$TEST_FSTYPE" "disk" "rd.md=0 rd.luks=0"
index ae19e4dfd5c3295ac77dc47ab7ddf2d6f40a7135..773fa2818392f471665eec2e380ddbeffbf2a834 100755 (executable)
@@ -56,7 +56,7 @@ test_setup() {
     # Create what will eventually be our root filesystem onto an overlay
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
     mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
 
     # second, install the files needed to make the root filesystem
@@ -69,7 +69,7 @@ test_setup() {
         -a "bash crypt lvm mdraid" \
         -I "grep cryptsetup" \
         -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
-        -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+        -f "$TESTDIR"/initramfs.makeroot
 
     # Create the blank files to use as a root filesystem
     declare -a disk_args=()
index a3037d8c088dbac300e53bf68ab230f975b1412b..52d786def76f95c4467987ce31ccb455332437b7 100755 (executable)
@@ -83,7 +83,7 @@ test_setup() {
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
         -i ./test-init.sh /sbin/init-persist \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
     mkdir -p "$TESTDIR"/rootfs && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/rootfs && rm -rf "$TESTDIR"/dracut.*
 
     # test to make sure /proc /sys and /dev is not needed inside the generated initrd
index 15518266b9d165dd1c2b6cffb63c8ae9921ce13a..5cf0201f945a9ec1e8a409ecafcf00329c97a5d7 100755 (executable)
@@ -28,7 +28,7 @@ test_setup() {
     # Create what will eventually be our root filesystem onto an overlay
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
     mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
 
     # second, install the files needed to make the root filesystem
@@ -40,7 +40,7 @@ test_setup() {
         -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
         --nomdadmconf \
         --no-hostonly-cmdline -N \
-        -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+        -f "$TESTDIR"/initramfs.makeroot
 
     declare -a disk_args=()
     # shellcheck disable=SC2034  # disk_index used in qemu_add_drive
index 4e270c7a5d1cc23a570caf1b63e849add3ba55e7..de57fd681440f0bd358e6bf5fc75020afc2b61b2 100755 (executable)
@@ -101,7 +101,7 @@ test_setup() {
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
         -a "$dracut_modules" \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
 
     KVERSION=$(determine_kernel_version "$TESTDIR"/initramfs.root)
 
index c29356421efd061fa357e9bb0c763f8f24ad1307..979825170391ba84d75f6423e0fad237f1ecce35 100755 (executable)
@@ -44,7 +44,7 @@ test_setup() {
     # Create what will eventually be our root filesystem onto an overlay
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
     mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
 
     # second, install the files needed to make the root filesystem
@@ -56,7 +56,7 @@ test_setup() {
         -i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
         --nomdadmconf \
         --no-hostonly-cmdline -N \
-        -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+        -f "$TESTDIR"/initramfs.makeroot
 
     declare -a disk_args=()
     # shellcheck disable=SC2034  # disk_index used in qemu_add_drive
@@ -79,7 +79,7 @@ test_setup() {
         --kernel-only \
         -m "kernel-modules qemu" \
         -d "ext4 sd_mod" \
-        -f "$TESTDIR"/initramfs-test "$KVERSION"
+        -f "$TESTDIR"/initramfs-test
 
     # vanilla kernel-independent systemd-based minimal initrd without dracut specific customizations
     # since dracut-systemd is not included in the generated initrd, only systemd options are supported during boot
index 23c6ba1cdbb5b40707c46777d56b028a426b5edf..2b53c49a68f8ca88469336e36f8568a377ca3f1f 100755 (executable)
@@ -52,7 +52,7 @@ test_setup() {
     # shellcheck disable=SC2153
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
 
     KVERSION=$(determine_kernel_version "$TESTDIR"/initramfs.root)
 
index 74b4b1a479c839e45dfa117281750b0fd27e896a..657105d3d9015f5444590c591410f77aea1b72ef 100755 (executable)
@@ -239,7 +239,7 @@ test_setup() {
         --add-confdir test-root \
         -a "url-lib nfs" \
         -I "ip grep setsid" \
-        -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+        -f "$TESTDIR"/initramfs.root || return 1
 
     KVERSION=$(determine_kernel_version "$TESTDIR"/initramfs.root)
     export kernel=$KVERSION
index c0e073e1f5584f73715ab34e521ed73a8a150042..cbcee91cb3c9d7b9a0ba185d556c16f90df45a5b 100755 (executable)
@@ -137,7 +137,7 @@ test_setup() {
     "$DRACUT" -N --keep --tmpdir "$TESTDIR" \
         --add-confdir test-root \
         -I "ip grep setsid" \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
     mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
 
     mkdir -p -- "$TESTDIR"/overlay/source/var/lib/nfs/rpc_pipefs
@@ -152,7 +152,7 @@ test_setup() {
         -I "setsid blockdev" \
         -i ./create-client-root.sh /lib/dracut/hooks/initqueue/01-create-client-root.sh \
         --no-hostonly-cmdline -N \
-        -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+        -f "$TESTDIR"/initramfs.makeroot
     rm -rf -- "$TESTDIR"/overlay
 
     declare -a disk_args=()
@@ -178,7 +178,7 @@ test_setup() {
         -I "modprobe chmod ip setsid pidof tgtd tgtadm /etc/passwd" \
         --install-optional "/etc/netconfig dhcpd /etc/group /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/services /usr/etc/nsswitch.conf /usr/etc/rpc /usr/etc/protocols /usr/etc/services" \
         -i "./dhcpd.conf" "/etc/dhcpd.conf" \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
     mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
 
     mkdir -p "$TESTDIR"/overlay/source/var/lib/dhcpd
@@ -191,7 +191,7 @@ test_setup() {
     "$DRACUT" -N -i "$TESTDIR"/overlay / \
         --add-confdir test-makeroot \
         -i ./create-server-root.sh /lib/dracut/hooks/initqueue/01-create-server-root.sh \
-        -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+        -f "$TESTDIR"/initramfs.makeroot
     rm -rf -- "$TESTDIR"/overlay
 
     declare -a disk_args=()
@@ -215,7 +215,7 @@ test_setup() {
         -i "./server.link" "/etc/systemd/network/01-server.link" \
         -i ./wait-if-server.sh /lib/dracut/hooks/pre-mount/99-wait-if-server.sh \
         --no-hostonly-cmdline -N \
-        -f "$TESTDIR"/initramfs.server "$KVERSION"
+        -f "$TESTDIR"/initramfs.server
 
     # Make client's dracut image
     test_dracut \
index 7351f9a42613a814a941f3c77c4f51acc728be8c..584c73d178e27b5a1fef529f8895911820a6df35 100755 (executable)
@@ -147,7 +147,7 @@ test_setup() {
         --add-confdir test-root \
         -I "ip grep setsid" \
         --no-hostonly --no-hostonly-cmdline --nohardlink \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
     mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
     mkdir -p -- "$TESTDIR"/overlay/source/var/lib/nfs/rpc_pipefs
     cp ./client-init.sh "$TESTDIR"/overlay/source/sbin/init
index c722fd988bc36a2667b5faa258266a87f6c8bbd9..88e34de7ef571f504fc2df7c6cd8b686dee77944 100755 (executable)
@@ -191,7 +191,7 @@ make_encrypted_root() {
         --add-confdir test-root \
         -I "ip grep" \
         --no-hostonly --no-hostonly-cmdline --nohardlink \
-        -f "$TESTDIR"/initramfs.root "$KVERSION"
+        -f "$TESTDIR"/initramfs.root
     mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
     cp ./client-init.sh "$TESTDIR"/overlay/source/sbin/init
 
index 841e7695363ce1ee2fc1c91db8dd48329322ba9e..974f1db1a295e27c42ffaf53607c9d0e1d1ec5cf 100755 (executable)
@@ -8,33 +8,34 @@ ARCH="${ARCH-$(uname -m)}"
 QEMU_CPU="${QEMU_CPU:-max}"
 
 set_vmlinux_env() {
-    VMLINUZ=${VMLINUZ-"/lib/modules/${KVERSION}/vmlinuz"}
-    if ! [ -f "$VMLINUZ" ]; then
-        VMLINUZ="/lib/modules/${KVERSION}/vmlinux"
-    fi
+    if [[ ${KVERSION-} ]]; then
+        VMLINUZ=${VMLINUZ-"/lib/modules/${KVERSION}/vmlinuz"}
+        if ! [ -f "$VMLINUZ" ]; then
+            VMLINUZ="/lib/modules/${KVERSION}/vmlinux"
+        fi
 
-    if ! [ -f "$VMLINUZ" ]; then
-        [[ -f /etc/machine-id ]] && read -r MACHINE_ID < /etc/machine-id
+        if ! [ -f "$VMLINUZ" ]; then
+            [[ -f /etc/machine-id ]] && read -r MACHINE_ID < /etc/machine-id
 
-        if [[ ${MACHINE_ID-} ]] && { [[ -d /boot/${MACHINE_ID} ]] || [[ -L /boot/${MACHINE_ID} ]]; }; then
-            VMLINUZ="/boot/${MACHINE_ID}/$KVERSION/linux"
-        elif [ -f "/boot/vmlinuz-${KVERSION}" ]; then
-            VMLINUZ="/boot/vmlinuz-${KVERSION}"
-        elif [ -f "/boot/vmlinux-${KVERSION}" ]; then
-            VMLINUZ="/boot/vmlinux-${KVERSION}"
-        elif [ -f "/boot/kernel-${KVERSION}" ]; then
-            VMLINUZ="/boot/kernel-${KVERSION}"
-        elif [ -f "/boot/Image-${KVERSION}" ]; then
-            VMLINUZ="/boot/Image-${KVERSION}"
+            if [[ ${MACHINE_ID-} ]] && { [[ -d /boot/${MACHINE_ID} ]] || [[ -L /boot/${MACHINE_ID} ]]; }; then
+                VMLINUZ="/boot/${MACHINE_ID}/$KVERSION/linux"
+            elif [ -f "/boot/vmlinuz-${KVERSION}" ]; then
+                VMLINUZ="/boot/vmlinuz-${KVERSION}"
+            elif [ -f "/boot/vmlinux-${KVERSION}" ]; then
+                VMLINUZ="/boot/vmlinux-${KVERSION}"
+            elif [ -f "/boot/kernel-${KVERSION}" ]; then
+                VMLINUZ="/boot/kernel-${KVERSION}"
+            elif [ -f "/boot/Image-${KVERSION}" ]; then
+                VMLINUZ="/boot/Image-${KVERSION}"
+            fi
         fi
-    fi
-
-    if ! [ -f "$VMLINUZ" ]; then
+    else
         VMLINUZ=$(find /boot/vmlinuz-* -type f 2> /dev/null | tail -1)
+        ! [ -f "$VMLINUZ" ] && VMLINUZ=$(find /lib/modules/ -type f -name vmlinuz 2> /dev/null | tail -1)
     fi
 
     if ! [ -f "$VMLINUZ" ]; then
-        echo "Could not find a Linux kernel version $KVERSION to test with!" >&2
+        echo "Could not find a Linux kernel version to test with!" >&2
         echo "Please install linux." >&2
         exit 1
     fi
index 2f4fc2668905b219e2ede869ce9ef3784997ae8e..ff1042071d298ff249249e46abb86fdfa7f8e0fb 100644 (file)
@@ -49,7 +49,7 @@ test_dracut() {
     fi
 
     # pick up configuration from $TESTDIR/dracut.conf.d when running the tests
-    TEST_DRACUT_ARGS+=" --confdir $TESTDIR/dracut.conf.d --add-confdir test --keep --tmpdir $TESTDIR/initrd --kver $KVERSION"
+    TEST_DRACUT_ARGS+=" --confdir $TESTDIR/dracut.conf.d --add-confdir test --keep --tmpdir $TESTDIR/initrd"
 
     # include $TESTDIR"/overlay if exists
     if [ -d "$TESTDIR"/overlay ]; then
@@ -99,25 +99,6 @@ ovmf_code() {
     done
 }
 
-determine_kernel_version() {
-    # inspired by kernel version detection in lsinitrd.sh
-
-    # Some test containers do not include systemd-detect-virt, so let's just assume
-    # we are running inside a container already
-
-    # shellcheck disable=SC2012
-    [[ ${KVERSION-} ]] || KVERSION="$(cd /lib/modules && ls -1v | tail -1)"
-    # shellcheck disable=SC2012
-    [[ ${KVERSION-} ]] || KVERSION="$(cd /usr/lib/modules && ls -1v | tail -1)"
-    [[ ${KVERSION-} ]] || KVERSION="$(uname -r)"
-
-    export KVERSION
-}
-
-set_test_envonment_variables() {
-    determine_kernel_version
-}
-
 command -v test_check &> /dev/null || test_check() {
     :
 }
@@ -214,13 +195,11 @@ while (($# > 0)); do
     case $1 in
         --run)
             echo "TEST RUN: $TEST_DESCRIPTION"
-            set_test_envonment_variables
             test_check && test_run
             exit $?
             ;;
         --setup)
             echo "TEST SETUP: $TEST_DESCRIPTION"
-            set_test_envonment_variables
             test_check && test_setup
             exit $?
             ;;
@@ -232,7 +211,6 @@ while (($# > 0)); do
             exit $?
             ;;
         --all)
-            set_test_envonment_variables
             if ! test_check 2 &> test${TEST_RUN_ID:+-$TEST_RUN_ID}.log; then
                 if [[ ${V-} == "1" || ${V-} == "2" ]]; then
                     cat test${TEST_RUN_ID:+-$TEST_RUN_ID}.log