Something is failing but we can't see what from the logs so let's use tee so we can.
78 lines
2.0 KiB
Bash
Executable File
78 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
# shellcheck disable=SC2064
|
|
set -eux
|
|
set -o pipefail
|
|
|
|
# shellcheck source=test/units/test-control.sh
|
|
. "$(dirname "$0")"/test-control.sh
|
|
# shellcheck source=test/units/util.sh
|
|
. "$(dirname "$0")"/util.sh
|
|
|
|
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 | tee /failed
|
|
test ! -s /failed
|
|
|
|
run_testcases
|