test: add test cases for defining mount and swap units from kernel cmdline

This commit is contained in:
Yu Watanabe 2023-05-12 03:55:46 +09:00
parent 55365b0a23
commit 93ec924c41
27 changed files with 163 additions and 1 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,5 @@
# Automatically generated by systemd-fstab-generator
[Unit]
Requires=dev-sdx1.device
After=dev-sdx1.device

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1 @@
../systemd-mkswap@dev-sdy2.service

View file

@ -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

View file

@ -0,0 +1 @@
../systemd-mkswap@dev-sdy3.service

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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