aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Snow <jsnow@redhat.com>2019-07-29 16:35:54 -0400
committerJohn Snow <jsnow@redhat.com>2019-08-16 16:28:02 -0400
commitde263986b5dc7571d12a95305ffc7ddd2f349431 (patch)
treeb38c736a59503dbae484ad1a826ffa6f9bea25e2
parentd443b74b3d752640e57a0f7e8efcc09d33504e63 (diff)
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: John Snow <jsnow@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-id: 20190709232550.10724-16-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
-rw-r--r--tests/qemu-iotests/iotests.py34
1 files changed, 24 insertions, 10 deletions
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 81ae7b911a..385dbad16a 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -358,31 +358,45 @@ class Timeout:
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)