]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
feat(test-root): add new module to share code between tests
authorLaszlo Gombos <laszlo.gombos@gmail.com>
Wed, 19 Oct 2022 01:10:07 +0000 (01:10 +0000)
committerAntonio Álvarez Feijoo <antonio.feijoo@suse.com>
Mon, 7 Nov 2022 17:04:47 +0000 (18:04 +0100)
Use dracut to make a root filesystem instead of each test case.

modules.d/80test-root/module-setup.sh [new file with mode: 0755]
test/TEST-03-USR-MOUNT/test.sh

diff --git a/modules.d/80test-root/module-setup.sh b/modules.d/80test-root/module-setup.sh
new file mode 100755 (executable)
index 0000000..29dfb2a
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+check() {
+    # Only include the module if another module requires it
+    return 255
+}
index bfd2ff061c7e3d79ba0731ebbe548e56480da6ba..6df1a9b4e2970499c237111df93e12db7872dafa 100755 (executable)
@@ -50,14 +50,20 @@ test_setup() {
     (
         # shellcheck disable=SC2030
         export initdir=$TESTDIR/overlay/source
-        mkdir -p "$initdir"
+        mkdir -p -- "$initdir" "$TESTDIR"/overlay/tmp
         # shellcheck disable=SC1090
         . "$basedir"/dracut-init.sh
-        (
-            cd "$initdir" || exit
-            mkdir -p -- dev sys proc etc var/run tmp
-            mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
-        )
+
+        "$basedir"/dracut.sh -l --keep --tmpdir "$TESTDIR"/overlay/tmp \
+            -m "test-root" \
+            -i ./test-init.sh /sbin/init \
+            -i "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" \
+            -i "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh" \
+            --no-hostonly --no-hostonly-cmdline --nomdadmconf --nohardlink \
+            -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+
+        mv "$TESTDIR"/overlay/tmp/dracut.*/initramfs/* "$initdir" && rm -rf "$TESTDIR"/overlay/tmp
+
         inst_multiple sh df free ls poweroff stty cat ps ln \
             mount dmesg mkdir cp \
             umount strace less setsid dd sync
@@ -66,8 +72,6 @@ test_setup() {
         done
         inst_multiple -o ${_terminfodir}/l/linux
 
-        inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
-        inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
         inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
         ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
         ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
@@ -75,7 +79,6 @@ test_setup() {
         inst_multiple grep df
         inst_simple ./fstab /etc/fstab
         inst_simple /etc/os-release
-        inst ./test-init.sh /sbin/init
         find_binary plymouth > /dev/null && inst_multiple plymouth
         cp -a /etc/ld.so.conf* "$initdir"/etc
         ldconfig -r "$initdir"