]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add test cases for defining mount and swap units from kernel cmdline 27563/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 11 May 2023 18:55:46 +0000 (03:55 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 23 May 2023 23:23:22 +0000 (08:23 +0900)
27 files changed:
test/test-fstab-generator.sh
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-without_fstype.mount [new file with mode: 0644]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-without_options.mount [new file with mode: 0644]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-withx20space.mount [new file with mode: 0644]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/initrd-root-device.target.d/50-root-device.conf [new file with mode: 0644]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/initrd-root-fs.target.requires/sysroot.mount [new symlink]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/initrd-usr-fs.target.requires/sysroot.mount [new symlink]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/local-fs.target.requires/hoge-without_fstype.mount [new symlink]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/local-fs.target.requires/hoge-without_options.mount [new symlink]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/remote-fs.target.requires/hoge-withx20space.mount [new symlink]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/sysroot.mount [new file with mode: 0644]
test/test-fstab-generator/test-19-mounts-from-cmdline.input [new file with mode: 0644]
test/test-fstab-generator/test-20-swap-from-cmdline.expected.container/initrd-usr-fs.target.requires/sysroot.mount [new file with mode: 0644]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy1.swap [new file with mode: 0644]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy2.swap [new file with mode: 0644]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy2.swap.requires/systemd-mkswap@dev-sdy2.service [new symlink]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy3.swap [new file with mode: 0644]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy3.swap.requires/systemd-mkswap@dev-sdy3.service [new symlink]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy4.swap [new file with mode: 0644]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/initrd-usr-fs.target.requires/sysroot.mount [new file with mode: 0644]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy1.swap [new symlink]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy2.swap [new symlink]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy3.swap [new symlink]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy4.swap [new symlink]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/systemd-mkswap@dev-sdy2.service [new file with mode: 0644]
test/test-fstab-generator/test-20-swap-from-cmdline.expected/systemd-mkswap@dev-sdy3.service [new file with mode: 0644]
test/test-fstab-generator/test-20-swap-from-cmdline.input [new file with mode: 0644]

index 7df67ce30507df265d06e0b5de8fb60c05e181ac..68c9d0631e2e56e898f1b8ea51a70aebe9902e05 100755 (executable)
@@ -28,11 +28,14 @@ for f in "$src"/test-*.input; do
         trap "rm -rf '$out'" EXIT INT QUIT PIPE
 
         exp="${f%.input}.expected"
+        if [[ "${f##*/}" =~ swap ]] && systemd-detect-virt --container >/dev/null; then
+            exp="${exp}.container"
+        fi
 
         if [[ "${f##*/}" =~ \.fstab\.input ]]; then
             SYSTEMD_LOG_LEVEL=debug SYSTEMD_IN_INITRD=yes SYSTEMD_SYSFS_CHECK=no SYSTEMD_PROC_CMDLINE="fstab=yes root=fstab" SYSTEMD_FSTAB="$f" SYSTEMD_SYSROOT_FSTAB="/dev/null" $generator "$out" "$out" "$out"
         else
-            SYSTEMD_LOG_LEVEL=debug SYSTEMD_IN_INITRD=yes SYSTEMD_PROC_CMDLINE="fstab=no $(cat "$f")" $generator "$out" "$out" "$out"
+            SYSTEMD_LOG_LEVEL=debug SYSTEMD_IN_INITRD=yes SYSTEMD_SYSFS_CHECK=no SYSTEMD_PROC_CMDLINE="fstab=no $(cat "$f")" $generator "$out" "$out" "$out"
         fi
 
         # The option x-systemd.growfs creates symlink to system's systemd-growfs@.service in .mount.wants directory.
@@ -55,6 +58,21 @@ for f in "$src"/test-*.input; do
             done
         fi
 
+        # .deb packager seems to dislike files named with backslash. So, as a workaround, we store files
+        # without backslash in .expected.
+        for i in "$out"/**/*\\*.{mount,swap}; do
+            k="${i//\\/}"
+            if [[ "$i" != "$k" ]]; then
+                if [[ -f "$i" ]]; then
+                    mv "$i" "$k"
+                elif [[ -L "$i" ]]; then
+                    dest=$(readlink "$i")
+                    rm "$i"
+                    ln -s "${dest//\\/}" "$k"
+                fi
+            fi
+        done
+
         # We store empty files rather than dead symlinks, so that they don't get pruned when packaged up, so compare
         # the list of filenames rather than their content
         if ! diff -u <(find "$out" -printf '%P\n' | sort) <(find "$exp" -printf '%P\n' | sort); then
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-without_fstype.mount b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-without_fstype.mount
new file mode 100644 (file)
index 0000000..4d7d975
--- /dev/null
@@ -0,0 +1,11 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Documentation=man:fstab(5) man:systemd-fstab-generator(8)
+SourcePath=/proc/cmdline
+Before=local-fs.target
+After=blockdev@dev-sdx3.target
+
+[Mount]
+What=/dev/sdx3
+Where=/hoge/without_fstype
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-without_options.mount b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-without_options.mount
new file mode 100644 (file)
index 0000000..4f16d2e
--- /dev/null
@@ -0,0 +1,11 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Documentation=man:fstab(5) man:systemd-fstab-generator(8)
+SourcePath=/proc/cmdline
+Before=local-fs.target
+After=blockdev@dev-sdx2.target
+
+[Mount]
+What=/dev/sdx2
+Where=/hoge/without_options
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-withx20space.mount b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-withx20space.mount
new file mode 100644 (file)
index 0000000..e9ffb4b
--- /dev/null
@@ -0,0 +1,12 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Documentation=man:fstab(5) man:systemd-fstab-generator(8)
+SourcePath=/proc/cmdline
+Before=remote-fs.target
+
+[Mount]
+What=//foo￾bar
+Where=/hoge/with space
+Type=cifs
+Options=rw
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/initrd-root-device.target.d/50-root-device.conf b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/initrd-root-device.target.d/50-root-device.conf
new file mode 100644 (file)
index 0000000..47c4232
--- /dev/null
@@ -0,0 +1,5 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Requires=dev-sdx1.device
+After=dev-sdx1.device
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/initrd-root-fs.target.requires/sysroot.mount b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/initrd-root-fs.target.requires/sysroot.mount
new file mode 120000 (symlink)
index 0000000..0c969cd
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/initrd-usr-fs.target.requires/sysroot.mount b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/initrd-usr-fs.target.requires/sysroot.mount
new file mode 120000 (symlink)
index 0000000..0c969cd
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/local-fs.target.requires/hoge-without_fstype.mount b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/local-fs.target.requires/hoge-without_fstype.mount
new file mode 120000 (symlink)
index 0000000..d46cee3
--- /dev/null
@@ -0,0 +1 @@
+../hoge-without_fstype.mount
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/local-fs.target.requires/hoge-without_options.mount b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/local-fs.target.requires/hoge-without_options.mount
new file mode 120000 (symlink)
index 0000000..9c790fb
--- /dev/null
@@ -0,0 +1 @@
+../hoge-without_options.mount
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/remote-fs.target.requires/hoge-withx20space.mount b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/remote-fs.target.requires/hoge-withx20space.mount
new file mode 120000 (symlink)
index 0000000..2404d76
--- /dev/null
@@ -0,0 +1 @@
+../hoge-withx20space.mount
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/sysroot.mount b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/sysroot.mount
new file mode 100644 (file)
index 0000000..c8547fa
--- /dev/null
@@ -0,0 +1,11 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Documentation=man:fstab(5) man:systemd-fstab-generator(8)
+SourcePath=/proc/cmdline
+Before=initrd-root-fs.target
+After=blockdev@dev-sdx1.target
+
+[Mount]
+What=/dev/sdx1
+Where=/sysroot
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.input b/test/test-fstab-generator/test-19-mounts-from-cmdline.input
new file mode 100644 (file)
index 0000000..4312d01
--- /dev/null
@@ -0,0 +1,5 @@
+systemd.mount-extra=/dev/sdx1:/sysroot:auto:defaults
+systemd.mount-extra=/dev/sdx2:/hoge/without_options:auto
+systemd.mount-extra=/dev/sdx3:/hoge/without_fstype
+systemd.mount-extra=/dev/sdx4
+systemd.mount-extra=//foo\ufffebar:/hoge/with\x20space:cifs:rw,seclabel
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected.container/initrd-usr-fs.target.requires/sysroot.mount b/test/test-fstab-generator/test-20-swap-from-cmdline.expected.container/initrd-usr-fs.target.requires/sysroot.mount
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy1.swap b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy1.swap
new file mode 100644 (file)
index 0000000..f515bc1
--- /dev/null
@@ -0,0 +1,9 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Documentation=man:fstab(5) man:systemd-fstab-generator(8)
+SourcePath=/proc/cmdline
+After=blockdev@dev-sdy1.target
+
+[Swap]
+What=/dev/sdy1
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy2.swap b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy2.swap
new file mode 100644 (file)
index 0000000..104260a
--- /dev/null
@@ -0,0 +1,10 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Documentation=man:fstab(5) man:systemd-fstab-generator(8)
+SourcePath=/proc/cmdline
+After=blockdev@dev-sdy2.target
+
+[Swap]
+What=/dev/sdy2
+Options=x-systemd.makefs
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy2.swap.requires/systemd-mkswap@dev-sdy2.service b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy2.swap.requires/systemd-mkswap@dev-sdy2.service
new file mode 120000 (symlink)
index 0000000..5248a5f
--- /dev/null
@@ -0,0 +1 @@
+../systemd-mkswap@dev-sdy2.service
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy3.swap b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy3.swap
new file mode 100644 (file)
index 0000000..3b6563d
--- /dev/null
@@ -0,0 +1,10 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Documentation=man:fstab(5) man:systemd-fstab-generator(8)
+SourcePath=/proc/cmdline
+After=blockdev@dev-sdy3.target
+
+[Swap]
+What=/dev/sdy3
+Options=x-systemd.makefs
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy3.swap.requires/systemd-mkswap@dev-sdy3.service b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy3.swap.requires/systemd-mkswap@dev-sdy3.service
new file mode 120000 (symlink)
index 0000000..e41d758
--- /dev/null
@@ -0,0 +1 @@
+../systemd-mkswap@dev-sdy3.service
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy4.swap b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/dev-sdy4.swap
new file mode 100644 (file)
index 0000000..37d90f7
--- /dev/null
@@ -0,0 +1,9 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Documentation=man:fstab(5) man:systemd-fstab-generator(8)
+SourcePath=/proc/cmdline
+After=blockdev@dev-sdy4.target
+
+[Swap]
+What=/dev/sdy4
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/initrd-usr-fs.target.requires/sysroot.mount b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/initrd-usr-fs.target.requires/sysroot.mount
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy1.swap b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy1.swap
new file mode 120000 (symlink)
index 0000000..a899ff8
--- /dev/null
@@ -0,0 +1 @@
+../dev-sdy1.swap
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy2.swap b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy2.swap
new file mode 120000 (symlink)
index 0000000..14df9d6
--- /dev/null
@@ -0,0 +1 @@
+../dev-sdy2.swap
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy3.swap b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy3.swap
new file mode 120000 (symlink)
index 0000000..19663fe
--- /dev/null
@@ -0,0 +1 @@
+../dev-sdy3.swap
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy4.swap b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/swap.target.requires/dev-sdy4.swap
new file mode 120000 (symlink)
index 0000000..9bfd9d8
--- /dev/null
@@ -0,0 +1 @@
+../dev-sdy4.swap
\ No newline at end of file
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/systemd-mkswap@dev-sdy2.service b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/systemd-mkswap@dev-sdy2.service
new file mode 100644 (file)
index 0000000..0911f03
--- /dev/null
@@ -0,0 +1,18 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Description=Make Swap on %f
+Documentation=man:systemd-mkswap@.service(8)
+
+DefaultDependencies=no
+BindsTo=%i.device
+After=%i.device
+Before=dev-sdy2.swap
+Conflicts=shutdown.target
+Before=shutdown.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/lib/systemd/systemd-makefs swap /dev/sdy2
+TimeoutSec=0
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.expected/systemd-mkswap@dev-sdy3.service b/test/test-fstab-generator/test-20-swap-from-cmdline.expected/systemd-mkswap@dev-sdy3.service
new file mode 100644 (file)
index 0000000..6201fec
--- /dev/null
@@ -0,0 +1,18 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Description=Make Swap on %f
+Documentation=man:systemd-mkswap@.service(8)
+
+DefaultDependencies=no
+BindsTo=%i.device
+After=%i.device
+Before=dev-sdy3.swap
+Conflicts=shutdown.target
+Before=shutdown.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/lib/systemd/systemd-makefs swap /dev/sdy3
+TimeoutSec=0
diff --git a/test/test-fstab-generator/test-20-swap-from-cmdline.input b/test/test-fstab-generator/test-20-swap-from-cmdline.input
new file mode 100644 (file)
index 0000000..953c09f
--- /dev/null
@@ -0,0 +1,4 @@
+systemd.mount-extra=/dev/sdy1:none:swap
+systemd.mount-extra=/dev/sdy2:none:swap:x-systemd.makefs
+systemd.swap-extra=/dev/sdy3:x-systemd.makefs,nofail
+systemd.swap-extra=/dev/sdy4