From: Krzesimir Nowak Date: Thu, 28 Mar 2024 14:19:55 +0000 (+0100) Subject: test: Add sysext test-cases for checking mode preservation X-Git-Tag: v256-rc1~86^2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6aab53b175db08b6c76229fae72fc18726902b00;p=thirdparty%2Fsystemd.git test: Add sysext test-cases for checking mode preservation --- diff --git a/test/units/testsuite-50.sysext.sh b/test/units/testsuite-50.sysext.sh index f3077f580d0..c69676a2089 100755 --- a/test/units/testsuite-50.sysext.sh +++ b/test/units/testsuite-50.sysext.sh @@ -721,4 +721,41 @@ touch "$fake_root$hierarchy/should-succeed-on-read-only-fs" (! SYSTEMD_SYSEXT_HIERARCHIES="$hierarchy" systemd-sysext --root="$fake_root" --mutable=import merge) + +for mutable_mode in no yes ephemeral; do + : "Check if merging the hierarchy does not change its permissions, checking with --mutable=${mutable_mode}" + + fake_root="$FAKE_ROOTS_DIR/perm-checks-mutable-$mutable_mode" + hierarchy=/usr + extension_data_dir="$fake_root/var/lib/extensions.mutable$hierarchy" + + prepare_root "$fake_root" "$hierarchy" + prepare_extension_image "$fake_root" "$hierarchy" + prepare_extension_mutable_dir "$extension_data_dir" + prepare_read_only_hierarchy "${fake_root}" "${hierarchy}" + + full_path="$fake_root$hierarchy" + permissions_before_merge=$(stat --format=%A "$full_path") + + # run systemd-sysext + SYSTEMD_SYSEXT_HIERARCHIES="$hierarchy" systemd-sysext --root="$fake_root" "--mutable=$mutable_mode" merge + + permissions_after_merge=$(stat --format=%A "$full_path") + + SYSTEMD_SYSEXT_HIERARCHIES="$hierarchy" systemd-sysext --root="$fake_root" unmerge + + permissions_after_unmerge=$(stat --format=%A "$full_path") + + if [[ "$permissions_before_merge" != "$permissions_after_merge" ]]; then + echo >&2 "Broken hierarchy permissions after merging with mutable mode ${mutable_mode@Q}, expected ${permissions_before_merge@Q}, got ${permissions_after_merge@Q}" + exit 1 + fi + + if [[ "$permissions_before_merge" != "$permissions_after_unmerge" ]]; then + echo >&2 "Broken hierarchy permissions after unmerging with mutable mode ${mutable_mode@Q}, expected ${permissions_before_merge@Q}, got ${permissions_after_unmerge@Q}" + exit 1 + fi +done + + exit 0