From e2d057456d69906fab64984d93c51a839f2d8702 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Thu, 10 Nov 2022 15:40:00 +0100 Subject: [PATCH] repart: Run most repart integration tests without root privileges To make sure rootless mode keeps working, let's run all repart integration tests that we can without root privileges. The only ones we need to keep running with root privileges are the tests that operate on a block/loop device and those that use --image=. --- test/TEST-58-REPART/test.sh | 9 +- test/units/testsuite-58.sh | 305 +++++++++++++++++++----------------- 2 files changed, 170 insertions(+), 144 deletions(-) diff --git a/test/TEST-58-REPART/test.sh b/test/TEST-58-REPART/test.sh index fb4a05fc774..0d513cf85bf 100755 --- a/test/TEST-58-REPART/test.sh +++ b/test/TEST-58-REPART/test.sh @@ -12,14 +12,15 @@ TEST_FORCE_NEWIMAGE=1 test_append_files() { if ! get_bool "${TEST_NO_QEMU:=}"; then install_dmevent - if command -v openssl >/dev/null 2>&1; then - inst_binary openssl - fi - inst_binary mcopy instmods dm_verity =md generate_module_dependencies image_install -o /sbin/mksquashfs fi + + inst_binary mcopy + if command -v openssl >/dev/null 2>&1; then + inst_binary openssl + fi } do_test "$@" diff --git a/test/units/testsuite-58.sh b/test/units/testsuite-58.sh index 121fabc0afe..a225ac8beec 100755 --- a/test/units/testsuite-58.sh +++ b/test/units/testsuite-58.sh @@ -3,6 +3,13 @@ set -eux set -o pipefail +runas() { + declare userid=$1 + shift + # shellcheck disable=SC2016 + su "$userid" -s /bin/sh -c 'XDG_RUNTIME_DIR=/run/user/$UID exec "$@"' -- sh "$@" +} + if ! command -v systemd-repart &>/dev/null; then echo "no systemd-repart" >/skipped exit 0 @@ -89,17 +96,17 @@ test_basic() { local defs imgs output local loop volume - defs="$(mktemp --directory "/tmp/test-repart.XXXXXXXXXX")" - imgs="$(mktemp --directory "/var/tmp/test-repart.XXXXXXXXXX")" + defs="$(runas testuser mktemp --directory "/tmp/test-repart.XXXXXXXXXX")" + imgs="$(runas testuser mktemp --directory "/var/tmp/test-repart.XXXXXXXXXX")" # shellcheck disable=SC2064 trap "rm -rf '$defs' '$imgs'" RETURN # 1. create an empty image - systemd-repart --empty=create \ - --size=1G \ - --seed="$seed" \ - "$imgs/zzz" + runas testuser systemd-repart --empty=create \ + --size=1G \ + --seed="$seed" \ + "$imgs/zzz" output=$(sfdisk -d "$imgs/zzz" | grep -v -e 'sector-size' -e '^$') @@ -133,11 +140,11 @@ SizeMaxBytes=64M PaddingMinBytes=92M EOF - systemd-repart --definitions="$defs" \ - --dry-run=no \ - --seed="$seed" \ - --include-partitions=home,swap \ - "$imgs/zzz" + runas testuser systemd-repart --definitions="$defs" \ + --dry-run=no \ + --seed="$seed" \ + --include-partitions=home,swap \ + "$imgs/zzz" output=$(sfdisk -d "$imgs/zzz" | grep -v -e 'sector-size' -e '^$') @@ -150,11 +157,11 @@ last-lba: 2097118 $imgs/zzz1 : start= 2048, size= 591856, type=933AC7E1-2EB4-4F13-B844-0E14E2AEF915, uuid=4980595D-D74A-483A-AA9E-9903879A0EE5, name=\"home-first\", attrs=\"GUID:59\" $imgs/zzz4 : start= 1777624, size= 131072, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=78C92DB8-3D2B-4823-B0DC-792B78F66F1E, name=\"swap\"" - systemd-repart --definitions="$defs" \ - --dry-run=no \ - --seed="$seed" \ - --exclude-partitions=root \ - "$imgs/zzz" + runas testuser systemd-repart --definitions="$defs" \ + --dry-run=no \ + --seed="$seed" \ + --exclude-partitions=root \ + "$imgs/zzz" output=$(sfdisk -d "$imgs/zzz" | grep -v -e 'sector-size' -e '^$') @@ -167,10 +174,10 @@ last-lba: 2097118 $imgs/zzz1 : start= 2048, size= 591856, type=933AC7E1-2EB4-4F13-B844-0E14E2AEF915, uuid=4980595D-D74A-483A-AA9E-9903879A0EE5, name=\"home-first\", attrs=\"GUID:59\" $imgs/zzz4 : start= 1777624, size= 131072, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=78C92DB8-3D2B-4823-B0DC-792B78F66F1E, name=\"swap\"" - systemd-repart --definitions="$defs" \ - --dry-run=no \ - --seed="$seed" \ - "$imgs/zzz" + runas testuser systemd-repart --definitions="$defs" \ + --dry-run=no \ + --seed="$seed" \ + "$imgs/zzz" output=$(sfdisk -d "$imgs/zzz" | grep -v -e 'sector-size' -e '^$') @@ -203,10 +210,10 @@ EOF echo "Label=ignored_label" >>"$defs/home.conf" echo "UUID=b0b1b2b3b4b5b6b7b8b9babbbcbdbebf" >>"$defs/home.conf" - systemd-repart --definitions="$defs" \ - --dry-run=no \ - --seed="$seed" \ - "$imgs/zzz" + runas testuser systemd-repart --definitions="$defs" \ + --dry-run=no \ + --seed="$seed" \ + "$imgs/zzz" output=$(sfdisk -d "$imgs/zzz" | grep -v -e 'sector-size' -e '^$') @@ -224,11 +231,11 @@ $imgs/zzz5 : start= 1908696, size= 188416, type=0FC63DAF-8483-4772-8E79 # 4. Resizing to 2G - systemd-repart --definitions="$defs" \ - --size=2G \ - --dry-run=no \ - --seed="$seed" \ - "$imgs/zzz" + runas testuser systemd-repart --definitions="$defs" \ + --size=2G \ + --dry-run=no \ + --seed="$seed" \ + "$imgs/zzz" output=$(sfdisk -d "$imgs/zzz" | grep -v -e 'sector-size' -e '^$') @@ -256,11 +263,11 @@ UUID=2a1d97e1d0a346cca26eadc643926617 CopyBlocks=$imgs/block-copy EOF - systemd-repart --definitions="$defs" \ - --size=3G \ - --dry-run=no \ - --seed="$seed" \ - "$imgs/zzz" + runas testuser systemd-repart --definitions="$defs" \ + --size=3G \ + --dry-run=no \ + --seed="$seed" \ + "$imgs/zzz" output=$(sfdisk -d "$imgs/zzz" | grep -v -e 'sector-size' -e '^$') @@ -279,11 +286,6 @@ $imgs/zzz6 : start= 4194264, size= 2097152, type=0FC63DAF-8483-4772-8E79 cmp --bytes=$((4096*10240)) --ignore-initial=0:$((512*4194264)) "$imgs/block-copy" "$imgs/zzz" - if systemd-detect-virt --quiet --container; then - echo "Skipping encrypt tests in container." - return - fi - # 6. Testing Format=/Encrypt=/CopyFiles= cat >"$defs/extra3.conf" <"$defs/esp.conf" <