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:
parent
02f3a91199
commit
ef6e92280e
@ -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'''
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user