diff options
Diffstat (limited to 'test/test-fstab-generator.sh')
-rwxr-xr-x | test/test-fstab-generator.sh | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/test/test-fstab-generator.sh b/test/test-fstab-generator.sh new file mode 100755 index 0000000..5a166ab --- /dev/null +++ b/test/test-fstab-generator.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: LGPL-2.1-or-later +set -e + +if [[ -n "$1" ]]; then + generator=$1 +elif [[ -x /usr/lib/systemd/system-generators/systemd-fstab-generator ]]; then + generator=/usr/lib/systemd/system-generators/systemd-fstab-generator +elif [[ -x /lib/systemd/system-generators/systemd-fstab-generator ]]; then + generator=/lib/systemd/system-generators/systemd-fstab-generator +else + exit 1 +fi + +src="$(dirname "$0")/testdata/test-fstab-generator" + +# fsck(8) is located in /usr/sbin on Debian +PATH=$PATH:/usr/sbin + +# systemd-pcrfs@.service could be enabled or not, depending on the host state +# of the host system. Override the measurement to avoid the issue. +export SYSTEMD_FORCE_MEASURE=0 + +for f in "$src"/test-*.input; do + echo "*** Running $f" + + ( + out=$(mktemp --tmpdir --directory "test-fstab-generator.XXXXXXXXXX") + # shellcheck disable=SC2064 + trap "rm -rf '$out'" EXIT INT QUIT PIPE + + # shellcheck disable=SC2046 + SYSTEMD_LOG_LEVEL=debug SYSTEMD_IN_INITRD=yes SYSTEMD_PROC_CMDLINE="fstab=no $(cat "$f")" $generator "$out" "$out" "$out" + + 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 + fi + + # We store empty files rather than 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 + echo "**** Unexpected output for $f" + exit 1 + fi + ) || exit 1 +done |