]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test-fstab-generator: also check file contents
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 11 May 2023 18:54:13 +0000 (03:54 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 23 May 2023 23:23:22 +0000 (08:23 +0900)
Since e683878c0f03a4ffa123e37b27933fbf7e144901, only filenames are
checked. Let's check contents of generated unit files.

20 files changed:
test/test-fstab-generator.sh
test/test-fstab-generator/test-12-dev-sdx.expected/initrd-root-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-12-dev-sdx.expected/initrd-usr-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-12-dev-sdx.expected/systemd-fsck-root.service
test/test-fstab-generator/test-13-label.expected/initrd-root-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-13-label.expected/initrd-usr-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-13-label.expected/systemd-fsck-root.service
test/test-fstab-generator/test-14-uuid.expected/initrd-root-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-14-uuid.expected/initrd-usr-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-14-uuid.expected/systemd-fsck-root.service
test/test-fstab-generator/test-15-partuuid.expected/initrd-root-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-15-partuuid.expected/initrd-usr-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-15-partuuid.expected/systemd-fsck-root.service
test/test-fstab-generator/test-16-tmpfs.expected/initrd-root-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-16-tmpfs.expected/initrd-usr-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-17-initrd-sysroot.fstab.expected/initrd-fs.target.requires/sysroot-usr.mount [changed from file to symlink]
test/test-fstab-generator/test-17-initrd-sysroot.fstab.expected/initrd-root-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-17-initrd-sysroot.fstab.expected/initrd-usr-fs.target.requires/sysroot.mount [changed from file to symlink]
test/test-fstab-generator/test-17-initrd-sysroot.fstab.expected/initrd-usr-fs.target.requires/sysusr-usr.mount [changed from file to symlink]
test/test-fstab-generator/test-17-initrd-sysroot.fstab.expected/systemd-fsck-root.service

index c86914a10774d9080e5382a27708f9a8706b8ac5..c844d0dae15c5b2879a2bd774af19c59221dbb48 100755 (executable)
@@ -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
deleted file mode 100644 (file)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0c969cdbd4a993319d984c0bc4876b141b505938
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
deleted file mode 100644 (file)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0c969cdbd4a993319d984c0bc4876b141b505938
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
index 7f914fdd145d17cad6cd7488f01caa3e9fbed8bf..95d943b87a04d5b746abd82c7bb832db0a5d4c66 100644 (file)
@@ -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
deleted file mode 100644 (file)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0c969cdbd4a993319d984c0bc4876b141b505938
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
deleted file mode 100644 (file)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0c969cdbd4a993319d984c0bc4876b141b505938
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
index a1327396ca19a96079bb8bc43276c2902ba8a836..d6c59ff6089c383fe9f884938023e6f083a1716f 100644 (file)
@@ -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
deleted file mode 100644 (file)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0c969cdbd4a993319d984c0bc4876b141b505938
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
deleted file mode 100644 (file)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0c969cdbd4a993319d984c0bc4876b141b505938
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
index 5945560287592296c594537d0d5c99be39bf18ed..cd9583c4dd01513667ec7c122543933053822e6d 100644 (file)
@@ -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
deleted file mode 100644 (file)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0c969cdbd4a993319d984c0bc4876b141b505938
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
deleted file mode 100644 (file)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0c969cdbd4a993319d984c0bc4876b141b505938
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
index aa1d455ecd0acf52f51f65bc66445e306f12ba6d..650ed8070a6a6b5ffe891de7f847357ef5313466 100644 (file)
@@ -3,6 +3,7 @@
 [Unit]
 Description=File System Check on /dev/disk/by-partuuid/3f5ad593-4546-4a94-a374-bcfb68aa11f7
 Documentation=man:systemd-fsck-root.service(8)
+
 DefaultDependencies=no
 BindsTo=dev-disk-by\x2dpartuuid-3f5ad593\x2d4546\x2d4a94\x2da374\x2dbcfb68aa11f7.device
 Conflicts=shutdown.target
deleted file mode 100644 (file)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0c969cdbd4a993319d984c0bc4876b141b505938
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
deleted file mode 100644 (file)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
new file mode 120000 (symlink)
index 0000000000000000000000000000000000000000..0c969cdbd4a993319d984c0bc4876b141b505938
--- /dev/null
@@ -0,0 +1 @@
+../sysroot.mount
\ No newline at end of file
index 7f914fdd145d17cad6cd7488f01caa3e9fbed8bf..95d943b87a04d5b746abd82c7bb832db0a5d4c66 100644 (file)
@@ -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