iotests: add file_path helper

Simple way to have auto generated filenames with auto cleanup. Like
FilePath but without using 'with' statement and without additional
indentation of the whole test.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20180312152126.286890-8-vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
[eblake: grammar tweak]
Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Vladimir Sementsov-Ogievskiy 2018-03-12 18:21:25 +03:00 committed by Eric Blake
parent 02f3a91199
commit ef6e92280e

View File

@ -27,6 +27,7 @@ import struct
import json
import signal
import logging
import atexit
sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'scripts'))
import qtest
@ -250,6 +251,37 @@ class FilePath(object):
return False
def file_path_remover():
for path in reversed(file_path_remover.paths):
try:
os.remove(path)
except OSError:
pass
def file_path(*names):
''' Another way to get auto-generated filename that cleans itself up.
Use is as simple as:
img_a, img_b = file_path('a.img', 'b.img')
sock = file_path('socket')
'''
if not hasattr(file_path_remover, 'paths'):
file_path_remover.paths = []
atexit.register(file_path_remover)
paths = []
for name in names:
filename = '{0}-{1}'.format(os.getpid(), name)
path = os.path.join(test_dir, filename)
file_path_remover.paths.append(path)
paths.append(path)
return paths[0] if len(paths) == 1 else paths
class VM(qtest.QEMUQtestMachine):
'''A QEMU VM'''