From 2b21522e82f920a8541df4daf0b65fdded277276 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 20 Aug 2022 04:37:00 +0900 Subject: [PATCH] test: merge test-repart.sh and TEST-58-REPART --- meson.build | 6 - src/partition/meson.build | 2 - src/partition/test-repart.sh | 331 -------------------------------- test/TEST-58-REPART/test.sh | 5 + test/units/testsuite-58.sh | 353 +++++++++++++++++++++++++++++++++++ 5 files changed, 358 insertions(+), 339 deletions(-) delete mode 100755 src/partition/test-repart.sh diff --git a/meson.build b/meson.build index aa2ae27a93d..e80634de7ae 100644 --- a/meson.build +++ b/meson.build @@ -3668,12 +3668,6 @@ if conf.get('ENABLE_REPART') == 1 install : true, install_dir : rootbindir) public_programs += exe - - if want_tests != 'false' - test('test-repart', - test_repart_sh, - args : [exe.full_path(), udevadm.full_path()]) - endif endif executable( diff --git a/src/partition/meson.build b/src/partition/meson.build index 5422fdd5750..a7a6c293792 100644 --- a/src/partition/meson.build +++ b/src/partition/meson.build @@ -1,5 +1,3 @@ # SPDX-License-Identifier: LGPL-2.1-or-later systemd_repart_sources = files('repart.c') - -test_repart_sh = find_program('test-repart.sh') diff --git a/src/partition/test-repart.sh b/src/partition/test-repart.sh deleted file mode 100755 index 1aac7ac1081..00000000000 --- a/src/partition/test-repart.sh +++ /dev/null @@ -1,331 +0,0 @@ -#!/usr/bin/env bash -# SPDX-License-Identifier: LGPL-2.1-or-later -set -eux -set -o pipefail - -[[ -e /dev/loop-control ]] || exit 77 - -repart="${1:?}" -udevadm="${2:?}" -test -x "$repart" -test -x "$udevadm" - -PATH=$PATH:/sbin:/usr/sbin - -D="$(mktemp --tmpdir --directory "test-repart.XXXXXXXXXX")" - -# shellcheck disable=SC2064 -trap "rm -rf '$D'" EXIT INT QUIT PIPE -mkdir -p "$D/definitions" - -SEED=e2a40bf9-73f1-4278-9160-49c031e7aef8 - -echo "### Testing systemd-repart --empty=create ###" - -"$repart" "$D/zzz" --empty=create --size=1G --seed="$SEED" --no-pager - -sfdisk -d "$D/zzz" | grep -v -e 'sector-size' -e '^$' >"$D/empty" - -cmp "$D/empty" - <"$D/definitions/root.conf" <"$D/definitions/home.conf" <"$D/definitions/swap.conf" <"$D/populated" - -cmp "$D/populated" - <"$D/definitions/swap.conf" <"$D/definitions/extra.conf" <>"$D/definitions/home.conf" -echo "UUID=b0b1b2b3b4b5b6b7b8b9babbbcbdbebf" >>"$D/definitions/home.conf" - -"$repart" "$D/zzz" --dry-run=no --seed="$SEED" --definitions="$D/definitions" --no-pager - -sfdisk -d "$D/zzz" | grep -v -e 'sector-size' -e '^$' >"$D/populated2" - -cmp "$D/populated2" - <"$D/populated3" - -cmp "$D/populated3" - <"$D/definitions/extra2.conf" <"$D/populated4" - -cmp "$D/populated4" - </dev/null ; then - echo "### Testing Format=/Encrypt=/CopyFiles=" - - # These tests require privileges unfortunately - - cat >"$D/definitions/extra3.conf" <"$D/populated5" - - cmp "$D/populated5" - </dev/null - umount "$D/mount" -else - echo "### Skipping Format=/Encrypt=/CopyFiles= test, lacking privileges or missing cryptsetup/diff/losetup" -fi - -echo "### Testing json output ###" -"$repart" "$D/zzz" --size=3G --dry-run=no --seed="$SEED" --definitions="$D/definitions" --no-pager --json=help -"$repart" "$D/zzz" --size=3G --dry-run=no --seed="$SEED" --definitions="$D/definitions" --no-pager --json=pretty -"$repart" "$D/zzz" --size=3G --dry-run=no --seed="$SEED" --definitions="$D/definitions" --no-pager --json=short - -echo "### Testing drop-in overrides ###" - -mkdir -p "$D/definitions-overrides" - -cat >"$D/definitions-overrides/root.conf" <"$D/definitions-overrides/root.conf.d/override1.conf" <"$D/definitions-overrides/root.conf.d/override2.conf" <"$D/definitions1/root1.conf" <"$D/definitions2/root2.conf" </run/systemd/system/systemd-udevd.service.d/debug.conf <"$defs/root.conf" <"$defs/home.conf" <"$defs/swap.conf" <"$defs/swap.conf" <"$defs/extra.conf" <>"$defs/home.conf" + echo "UUID=b0b1b2b3b4b5b6b7b8b9babbbcbdbebf" >>"$defs/home.conf" + + systemd-repart --definitions="$defs" \ + --dry-run=no \ + --seed="$seed" \ + "$imgs/zzz" + + output=$(sfdisk -d "$imgs/zzz" | grep -v -e 'sector-size' -e '^$') + + assert_eq "$output" "label: gpt +label-id: 1D2CE291-7CCE-4F7D-BC83-FDB49AD74EBD +device: $imgs/zzz +unit: sectors +first-lba: 2048 +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/zzz2 : start= 593904, size= 591856, type=${root_guid}, uuid=${root_uuid}, name=\"root-${architecture}\", attrs=\"GUID:59\" +$imgs/zzz3 : start= 1185760, size= 591864, type=${root_guid}, uuid=${root_uuid2}, name=\"root-${architecture}-2\", attrs=\"GUID:59\" +$imgs/zzz4 : start= 1777624, size= 131072, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=78C92DB8-3D2B-4823-B0DC-792B78F66F1E, name=\"swap\" +$imgs/zzz5 : start= 1908696, size= 188416, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=A0A1A2A3-A4A5-A6A7-A8A9-AAABACADAEAF, name=\"custom_label\"" + + # 4. Resizing to 2G + + systemd-repart --definitions="$defs" \ + --size=2G \ + --dry-run=no \ + --seed="$seed" \ + "$imgs/zzz" + + output=$(sfdisk -d "$imgs/zzz" | grep -v -e 'sector-size' -e '^$') + + assert_eq "$output" "label: gpt +label-id: 1D2CE291-7CCE-4F7D-BC83-FDB49AD74EBD +device: $imgs/zzz +unit: sectors +first-lba: 2048 +last-lba: 4194270 +$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/zzz2 : start= 593904, size= 591856, type=${root_guid}, uuid=${root_uuid}, name=\"root-${architecture}\", attrs=\"GUID:59\" +$imgs/zzz3 : start= 1185760, size= 591864, type=${root_guid}, uuid=${root_uuid2}, name=\"root-${architecture}-2\", attrs=\"GUID:59\" +$imgs/zzz4 : start= 1777624, size= 131072, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=78C92DB8-3D2B-4823-B0DC-792B78F66F1E, name=\"swap\" +$imgs/zzz5 : start= 1908696, size= 2285568, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=A0A1A2A3-A4A5-A6A7-A8A9-AAABACADAEAF, name=\"custom_label\"" + + # 5. Testing with root, root2, home, swap, another partition, and partition copy + + dd if=/dev/urandom of="$imgs/block-copy" bs=4096 count=10240 + + cat >"$defs/extra2.conf" <"$defs/extra3.conf" </dev/null + umount "$imgs/mount" +} + +test_dropin() { + local defs imgs output + + defs="$(mktemp --directory "/tmp/test-repart.XXXXXXXXXX")" + imgs="$(mktemp --directory "/var/tmp/test-repart.XXXXXXXXXX")" + # shellcheck disable=SC2064 + trap "rm -rf '$defs' '$imgs'" RETURN + + cat >"$defs/root.conf" <"$defs/root.conf.d/override1.conf" <"$defs/root.conf.d/override2.conf" <"$defs/1/root1.conf" <"$defs/2/root2.conf" <