提交 f4844ac0 编写于 作者: S Stefan Hajnoczi

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: NStefan Hajnoczi <stefanha@redhat.com>
Message-id: 20170824072202.26818-3-stefanha@redhat.com
Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
上级 d792bc38
......@@ -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'''
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册