mirror of
https://github.com/systemd/systemd.git
synced 2024-10-30 06:25:37 +03:00
0a62b8f705
TEST-70 specified its own EXIT handler, which replaced the `cleanup_loopdev` handler, so the loop device was always hanging around once this test was run. Let's use the new `add_at_exit_handler()` stuff to mitigate this.
49 lines
1.5 KiB
Bash
Executable File
49 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
set -e
|
|
|
|
TEST_DESCRIPTION="cryptenroll/cryptsetup with TPM2 devices"
|
|
IMAGE_NAME="tpm2"
|
|
TEST_NO_NSPAWN=1
|
|
TEST_REQUIRE_INSTALL_TESTS=0
|
|
|
|
# shellcheck source=test/test-functions
|
|
. "${TEST_BASE_DIR:?}/test-functions"
|
|
|
|
command -v swtpm >/dev/null 2>&1 || exit 0
|
|
command -v tpm2_pcrextend >/dev/null 2>&1 || exit 0
|
|
|
|
test_append_files() {
|
|
local workspace="${1:?}"
|
|
|
|
instmods tpm tpm_tis tpm_ibmvtpm
|
|
install_dmevent
|
|
generate_module_dependencies
|
|
inst_binary tpm2_pcrextend
|
|
|
|
# On Ubuntu, cryptsetup does not link against libgcc_s.so.1
|
|
if get_bool "$LOOKS_LIKE_DEBIAN"; then
|
|
inst_library "/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/libgcc_s.so.1"
|
|
fi
|
|
}
|
|
|
|
TEST_70_TPM_DEVICE="tpm-tis"
|
|
if [[ "$(uname -m)" == "ppc64le" ]]; then
|
|
# tpm-spapr support was introduced in qemu 5.0.0. Skip test for old qemu versions.
|
|
qemu_min_version "5.0.0" || exit 0
|
|
TEST_70_TPM_DEVICE="tpm-spapr"
|
|
fi
|
|
|
|
TEST_70_at_exit() {
|
|
[[ -n "${TEST_70_SWTPM_PID:-}" ]] && kill "$TEST_70_SWTPM_PID" &>/dev/null
|
|
[[ -n "${TEST_70_TPM_STATE:-}" ]] && rm -rf "$TEST_70_TPM_STATE"
|
|
}
|
|
|
|
TEST_70_TPM_STATE="$(mktemp -d)"
|
|
swtpm socket --tpm2 --tpmstate dir="$TEST_70_TPM_STATE" --ctrl type=unixio,path="$TEST_70_TPM_STATE/sock" &
|
|
TEST_70_SWTPM_PID=$!
|
|
add_at_exit_handler TEST_70_at_exit
|
|
QEMU_OPTIONS+=" -chardev socket,id=chrtpm,path=$TEST_70_TPM_STATE/sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device $TEST_70_TPM_DEVICE,tpmdev=tpm0"
|
|
|
|
do_test "$@"
|