Skip to content

Commit

Permalink
iotests.py: add FilePath context manager
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
stefanhaRH committed Sep 5, 2017
1 parent d792bc3 commit f4844ac
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions tests/qemu-iotests/iotests.py
Expand Up @@ -160,6 +160,32 @@ def __exit__(self, type, value, traceback):
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'''

Expand Down

0 comments on commit f4844ac

Please sign in to comment.