1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-25 01:34:28 +03:00
systemd/test/units/testsuite-74.machine-id-setup.sh

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 >/failed
test ! -s /failed
run_testcases