mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08:00
test-fstab-generator: also check file contents
Since e683878c0f, only filenames are
checked. Let's check contents of generated unit files.
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -e
|
||||
shopt -s nullglob
|
||||
shopt -s globstar
|
||||
|
||||
if [[ -n "$1" ]]; then
|
||||
generator=$1
|
||||
@@ -25,23 +27,62 @@ for f in "$src"/test-*.input; do
|
||||
# shellcheck disable=SC2064
|
||||
trap "rm -rf '$out'" EXIT INT QUIT PIPE
|
||||
|
||||
# shellcheck disable=SC2046
|
||||
if [[ "$f" == *.fstab.input ]]; then
|
||||
exp="${f%.input}.expected"
|
||||
|
||||
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"
|
||||
fi
|
||||
|
||||
if [[ -f "$out"/systemd-fsck-root.service ]]; then
|
||||
# For split-usr system
|
||||
sed -i -e 's:ExecStart=/lib/systemd/systemd-fsck:ExecStart=/usr/lib/systemd/systemd-fsck:' "$out"/systemd-fsck-root.service
|
||||
# For split-usr system
|
||||
for i in "$out"/systemd-*.service; do
|
||||
sed -i -e 's:ExecStart=/lib/systemd/:ExecStart=/usr/lib/systemd/:' "$i"
|
||||
done
|
||||
|
||||
if [[ "${f##*/}" =~ \.fstab\.input ]]; then
|
||||
for i in "$out"/*.{automount,mount,swap}; do
|
||||
sed -i -e 's:SourcePath=.*$:SourcePath=/etc/fstab:' "$i"
|
||||
done
|
||||
fi
|
||||
|
||||
# We store empty files rather than symlinks, so that they don't get pruned when packaged up, so compare
|
||||
# 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 "${f%.input}.expected" -printf '%P\n' | sort); then
|
||||
if ! diff -u <(find "$out" -printf '%P\n' | sort) <(find "$exp" -printf '%P\n' | sort); then
|
||||
echo "**** Unexpected output for $f"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check the main units.
|
||||
if ! diff -u "$out" "$exp"; then
|
||||
echo "**** Unexpected output for $f"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Also check drop-ins.
|
||||
for i in "$out"/*; do
|
||||
[[ -d "$i" ]] || continue
|
||||
|
||||
dir="${i##*/}"
|
||||
|
||||
for j in "$i"/*; do
|
||||
fname="${j##*/}"
|
||||
expf="$exp/$dir/$fname"
|
||||
|
||||
if [[ -L "$j" && ! -e "$j" ]]; then
|
||||
# For dead symlink, we store an empty file.
|
||||
if [[ ! -e "$expf" || -n "$(cat "$expf")" ]]; then
|
||||
echo "**** Unexpected symlink $j created by $f"
|
||||
exit 1
|
||||
fi
|
||||
continue
|
||||
fi
|
||||
|
||||
if ! diff -u "$j" "$expf"; then
|
||||
echo "**** Unexpected output in $j for $f"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
done
|
||||
) || exit 1
|
||||
done
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
../sysroot.mount
|
||||
@@ -0,0 +1 @@
|
||||
../sysroot.mount
|
||||
@@ -3,6 +3,7 @@
|
||||
[Unit]
|
||||
Description=File System Check on /dev/sdx1
|
||||
Documentation=man:systemd-fsck-root.service(8)
|
||||
|
||||
DefaultDependencies=no
|
||||
BindsTo=dev-sdx1.device
|
||||
Conflicts=shutdown.target
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
../sysroot.mount
|
||||
@@ -0,0 +1 @@
|
||||
../sysroot.mount
|
||||
@@ -3,6 +3,7 @@
|
||||
[Unit]
|
||||
Description=File System Check on /dev/disk/by-label/Root
|
||||
Documentation=man:systemd-fsck-root.service(8)
|
||||
|
||||
DefaultDependencies=no
|
||||
BindsTo=dev-disk-by\x2dlabel-Root.device
|
||||
Conflicts=shutdown.target
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
../sysroot.mount
|
||||
@@ -0,0 +1 @@
|
||||
../sysroot.mount
|
||||
@@ -3,6 +3,7 @@
|
||||
[Unit]
|
||||
Description=File System Check on /dev/disk/by-uuid/3f5ad593-4546-4a94-a374-bcfb68aa11f7
|
||||
Documentation=man:systemd-fsck-root.service(8)
|
||||
|
||||
DefaultDependencies=no
|
||||
BindsTo=dev-disk-by\x2duuid-3f5ad593\x2d4546\x2d4a94\x2da374\x2dbcfb68aa11f7.device
|
||||
Conflicts=shutdown.target
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
../sysroot.mount
|
||||
@@ -0,0 +1 @@
|
||||
../sysroot.mount
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user