{"id":810174,"url":"http://patchwork.ozlabs.org/api/1.2/patches/810174/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20170905132908.30931-3-stefanha@redhat.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.2/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20170905132908.30931-3-stefanha@redhat.com>","list_archive_url":null,"date":"2017-09-05T13:29:06","name":"[PULL,2/4] iotests.py: add FilePath context manager","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"cb742f12fad378e84b995001da7fa8d1fd00e159","submitter":{"id":17227,"url":"http://patchwork.ozlabs.org/api/1.2/people/17227/?format=json","name":"Stefan Hajnoczi","email":"stefanha@redhat.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20170905132908.30931-3-stefanha@redhat.com/mbox/","series":[{"id":1584,"url":"http://patchwork.ozlabs.org/api/1.2/series/1584/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=1584","date":"2017-09-05T13:29:04","name":"[PULL,1/4] qemu.py: make VM() a context manager","version":1,"mbox":"http://patchwork.ozlabs.org/series/1584/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/810174/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/810174/checks/","tags":{},"related":[],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx09.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx09.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=stefanha@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xmnhl6xDzz9t2S\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 23:32:55 +1000 (AEST)","from localhost ([::1]:58963 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dpDyI-0003EV-2Z\n\tfor incoming@patchwork.ozlabs.org; Tue, 05 Sep 2017 09:32:54 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:51293)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <stefanha@redhat.com>) id 1dpDuy-0000nH-5F\n\tfor qemu-devel@nongnu.org; Tue, 05 Sep 2017 09:29:32 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <stefanha@redhat.com>) id 1dpDuq-0003sZ-25\n\tfor qemu-devel@nongnu.org; Tue, 05 Sep 2017 09:29:28 -0400","from mx1.redhat.com ([209.132.183.28]:43328)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <stefanha@redhat.com>) id 1dpDup-0003ry-Qc\n\tfor qemu-devel@nongnu.org; Tue, 05 Sep 2017 09:29:19 -0400","from smtp.corp.redhat.com\n\t(int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 910CF6586E;\n\tTue,  5 Sep 2017 13:29:18 +0000 (UTC)","from localhost (ovpn-117-180.ams2.redhat.com [10.36.117.180])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id E4642835D3;\n\tTue,  5 Sep 2017 13:29:17 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 910CF6586E","From":"Stefan Hajnoczi <stefanha@redhat.com>","To":"<qemu-devel@nongnu.org>","Date":"Tue,  5 Sep 2017 14:29:06 +0100","Message-Id":"<20170905132908.30931-3-stefanha@redhat.com>","In-Reply-To":"<20170905132908.30931-1-stefanha@redhat.com>","References":"<20170905132908.30931-1-stefanha@redhat.com>","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.12","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.38]);\n\tTue, 05 Sep 2017 13:29:18 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"[Qemu-devel] [PULL 2/4] iotests.py: add FilePath context manager","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"Peter Maydell <peter.maydell@linaro.org>,\n\tStefan Hajnoczi <stefanha@redhat.com>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"},"content":"The scratch/ (TEST_DIR) directory is not automatically cleaned up after\ntest execution.  It is the responsibility of tests to remove any files\nthey create.\n\nA nice way of doing this is to declare files at the beginning of the\ntest and automatically remove them with a context manager:\n\n  with iotests.FilePath('test.img') as img_path:\n      qemu_img(...)\n      qemu_io(...)\n  # img_path is guaranteed to be deleted here\n\nSigned-off-by: Stefan Hajnoczi <stefanha@redhat.com>\nMessage-id: 20170824072202.26818-3-stefanha@redhat.com\nSigned-off-by: Stefan Hajnoczi <stefanha@redhat.com>\n---\n tests/qemu-iotests/iotests.py | 26 ++++++++++++++++++++++++++\n 1 file changed, 26 insertions(+)","diff":"diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py\nindex 7233983f3c..07fa1626a0 100644\n--- a/tests/qemu-iotests/iotests.py\n+++ b/tests/qemu-iotests/iotests.py\n@@ -160,6 +160,32 @@ class Timeout:\n     def timeout(self, signum, frame):\n         raise Exception(self.errmsg)\n \n+\n+class FilePath(object):\n+    '''An auto-generated filename that cleans itself up.\n+\n+    Use this context manager to generate filenames and ensure that the file\n+    gets deleted::\n+\n+        with TestFilePath('test.img') as img_path:\n+            qemu_img('create', img_path, '1G')\n+        # migration_sock_path is automatically deleted\n+    '''\n+    def __init__(self, name):\n+        filename = '{0}-{1}'.format(os.getpid(), name)\n+        self.path = os.path.join(test_dir, filename)\n+\n+    def __enter__(self):\n+        return self.path\n+\n+    def __exit__(self, exc_type, exc_val, exc_tb):\n+        try:\n+            os.remove(self.path)\n+        except OSError:\n+            pass\n+        return False\n+\n+\n class VM(qtest.QEMUQtestMachine):\n     '''A QEMU VM'''\n \n","prefixes":["PULL","2/4"]}