diff --git a/tests/functional/arm/test_aspeed_ast2600_buildroot.py b/tests/functional/arm/test_aspeed_ast2600_buildroot.py index 51f2676c90..575a5f6414 100755 --- a/tests/functional/arm/test_aspeed_ast2600_buildroot.py +++ b/tests/functional/arm/test_aspeed_ast2600_buildroot.py @@ -9,8 +9,8 @@ import time import tempfile import subprocess -from qemu_test import Asset from aspeed import AspeedTest +from qemu_test import Asset from qemu_test import exec_command_and_wait_for_pattern, skipIfMissingCommands @@ -66,21 +66,18 @@ class AST2600Machine(AspeedTest): 'images/ast2600-evb/buildroot-2023.02-tpm/flash.img'), 'a46009ae8a5403a0826d607215e731a8c68d27c14c41e55331706b8f9c7bd997') - @skipIfMissingCommands('swtpm') - def test_arm_ast2600_evb_buildroot_tpm(self): - self.set_machine('ast2600-evb') - + def _test_arm_ast2600_evb_buildroot_tpm(self, tpmstate_dir): image_path = self.ASSET_BR2_202302_AST2600_TPM_FLASH.fetch() - tpmstate_dir = tempfile.TemporaryDirectory(prefix="qemu_") - socket = os.path.join(tpmstate_dir.name, 'swtpm-socket') + socket = os.path.join(tpmstate_dir, 'swtpm-socket') # We must put the TPM state dir in /tmp/, not the build dir, # because some distros use AppArmor to lock down swtpm and # restrict the set of locations it can access files in. subprocess.run(['swtpm', 'socket', '-d', '--tpm2', - '--tpmstate', f'dir={tpmstate_dir.name}', - '--ctrl', f'type=unixio,path={socket}']) + '--tpmstate', f'dir={tpmstate_dir}', + '--ctrl', f'type=unixio,path={socket}'], + check=True) self.vm.add_args('-chardev', f'socket,id=chrtpm,path={socket}') self.vm.add_args('-tpmdev', 'emulator,id=tpm0,chardev=chrtpm') @@ -97,6 +94,12 @@ class AST2600Machine(AspeedTest): self.do_test_arm_aspeed_buildroot_poweroff() + @skipIfMissingCommands('swtpm') + def test_arm_ast2600_evb_buildroot_tpm(self): + self.set_machine('ast2600-evb') + with tempfile.TemporaryDirectory(prefix="qemu_") as tpmstate_dir: + self._test_arm_ast2600_evb_buildroot_tpm(tpmstate_dir) + if __name__ == '__main__': AspeedTest.main()