2023-05-16 19:31:45 +03:00
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
# shellcheck disable=SC2064
set -eux
set -o pipefail
2023-05-22 13:39:25 +03:00
# shellcheck source=test/units/test-control.sh
. " $( dirname " $0 " ) " /test-control.sh
# shellcheck source=test/units/util.sh
. " $( dirname " $0 " ) " /util.sh
2023-05-16 19:31:45 +03:00
root_mock( ) {
local root = " ${ 1 : ? } "
mkdir -p " $root "
# Put a tmpfs over the "root", so we're able to remount it as read-only
# when needed
mount -t tmpfs tmpfs " $root "
mkdir " $root /etc " " $root /run "
}
root_cleanup( ) {
local root = " ${ 1 : ? } "
umount --recursive " $root "
rm -fr " $root "
}
testcase_sanity( ) {
systemd-machine-id-setup
systemd-machine-id-setup --help
systemd-machine-id-setup --version
systemd-machine-id-setup --print
systemd-machine-id-setup --root= --print
systemd-machine-id-setup --root= / --print
( ! systemd-machine-id-setup "" )
( ! systemd-machine-id-setup --foo)
}
testcase_invalid( ) {
local root machine_id
root = " $( mktemp -d) "
trap " root_cleanup $root " RETURN
root_mock " $root "
systemd-machine-id-setup --print --root " $root "
echo abc >>" $root /etc/machine-id "
machine_id = " $( systemd-machine-id-setup --print --root " $root " ) "
diff <( echo " $machine_id " ) " $root /etc/machine-id "
}
testcase_transient( ) {
local root transient_id committed_id
root = " $( mktemp -d) "
trap " root_cleanup $root " RETURN
root_mock " $root "
systemd-machine-id-setup --print --root " $root "
echo abc >>" $root /etc/machine-id "
mount -o remount,ro " $root "
mount -t tmpfs tmpfs " $root /run "
transient_id = " $( systemd-machine-id-setup --print --root " $root " ) "
mount -o remount,rw " $root "
committed_id = " $( systemd-machine-id-setup --print --commit --root " $root " ) "
[ [ " $transient_id " = = " $committed_id " ] ]
diff " $root /etc/machine-id " " $root /run/machine-id "
}
# Check if we correctly processed the invalid machine ID we set up in the respective
# test.sh file
systemctl --state= failed --no-legend --no-pager >/failed
test ! -s /failed
2023-05-22 13:39:25 +03:00
run_testcases