Skip to content
Snippets Groups Projects
Commit de263986 authored by John Snow's avatar John Snow
Browse files

iotests: teach FilePath to produce multiple paths


Use "FilePaths" instead of "FilePath" to request multiple files be
cleaned up after we leave that object's scope.

This is not crucial; but it saves a little typing.

Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
Reviewed-by: default avatarMax Reitz <mreitz@redhat.com>
Message-id: 20190709232550.10724-16-jsnow@redhat.com
Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
parent d443b74b
No related branches found
No related tags found
No related merge requests found
......@@ -358,31 +358,45 @@ def __exit__(self, type, value, traceback):
def timeout(self, signum, frame):
raise Exception(self.errmsg)
def file_pattern(name):
return "{0}-{1}".format(os.getpid(), name)
class FilePath(object):
'''An auto-generated filename that cleans itself up.
class FilePaths(object):
"""
FilePaths is an auto-generated filename that cleans itself up.
Use this context manager to generate filenames and ensure that the file
gets deleted::
with TestFilePath('test.img') as img_path:
with FilePaths(['test.img']) as img_path:
qemu_img('create', img_path, '1G')
# migration_sock_path is automatically deleted
'''
def __init__(self, name):
filename = '{0}-{1}'.format(os.getpid(), name)
self.path = os.path.join(test_dir, filename)
"""
def __init__(self, names):
self.paths = []
for name in names:
self.paths.append(os.path.join(test_dir, file_pattern(name)))
def __enter__(self):
return self.path
return self.paths
def __exit__(self, exc_type, exc_val, exc_tb):
try:
os.remove(self.path)
for path in self.paths:
os.remove(path)
except OSError:
pass
return False
class FilePath(FilePaths):
"""
FilePath is a specialization of FilePaths that takes a single filename.
"""
def __init__(self, name):
super(FilePath, self).__init__([name])
def __enter__(self):
return self.paths[0]
def file_path_remover():
for path in reversed(file_path_remover.paths):
......@@ -407,7 +421,7 @@ def file_path(*names):
paths = []
for name in names:
filename = '{0}-{1}'.format(os.getpid(), name)
filename = file_pattern(name)
path = os.path.join(test_dir, filename)
file_path_remover.paths.append(path)
paths.append(path)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment