iotests.py: add FilePath context manager
The scratch/ (TEST_DIR) directory is not automatically cleaned up after test execution. It is the responsibility of tests to remove any files they create. A nice way of doing this is to declare files at the beginning of the test and automatically remove them with a context manager: with iotests.FilePath('test.img') as img_path: qemu_img(...) qemu_io(...) # img_path is guaranteed to be deleted here Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 20170824072202.26818-3-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
d792bc3811
commit
f4844ac0ad
@ -160,6 +160,32 @@ class Timeout:
|
||||
def timeout(self, signum, frame):
|
||||
raise Exception(self.errmsg)
|
||||
|
||||
|
||||
class FilePath(object):
|
||||
'''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:
|
||||
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 __enter__(self):
|
||||
return self.path
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
try:
|
||||
os.remove(self.path)
|
||||
except OSError:
|
||||
pass
|
||||
return False
|
||||
|
||||
|
||||
class VM(qtest.QEMUQtestMachine):
|
||||
'''A QEMU VM'''
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user