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):
|
def timeout(self, signum, frame):
|
||||||
raise Exception(self.errmsg)
|
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):
|
class VM(qtest.QEMUQtestMachine):
|
||||||
'''A QEMU VM'''
|
'''A QEMU VM'''
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user