get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2013893/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2013893,
    "url": "http://patchwork.ozlabs.org/api/patches/2013893/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20241121154218.1423005-9-berrange@redhat.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "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": "<20241121154218.1423005-9-berrange@redhat.com>",
    "list_archive_url": null,
    "date": "2024-11-21T15:42:08",
    "name": "[v2,08/18] tests/functional: honour self.workdir in ACPI bits tests",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "78e524e2c36a1f1ed794045df147e505abc3549b",
    "submitter": {
        "id": 2694,
        "url": "http://patchwork.ozlabs.org/api/people/2694/?format=api",
        "name": "Daniel P. Berrangé",
        "email": "berrange@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20241121154218.1423005-9-berrange@redhat.com/mbox/",
    "series": [
        {
            "id": 433720,
            "url": "http://patchwork.ozlabs.org/api/series/433720/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=433720",
            "date": "2024-11-21T15:42:05",
            "name": "test/functional: improve functional test debugging & fix tuxrun",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/433720/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2013893/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2013893/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@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=NryQPFsV;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4XvMxX2Qvmz1xyG\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 22 Nov 2024 02:45:04 +1100 (AEDT)",
            "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1tE9Lp-0001qD-LE; Thu, 21 Nov 2024 10:44:13 -0500",
            "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <berrange@redhat.com>)\n id 1tE9L8-0000Te-8l\n for qemu-devel@nongnu.org; Thu, 21 Nov 2024 10:43:33 -0500",
            "from us-smtp-delivery-124.mimecast.com ([170.10.129.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <berrange@redhat.com>)\n id 1tE9L4-0000m3-3v\n for qemu-devel@nongnu.org; Thu, 21 Nov 2024 10:43:29 -0500",
            "from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-591-QfD08tKLP9S1FhzFUitHIg-1; Thu,\n 21 Nov 2024 10:43:14 -0500",
            "from mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.15])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 7C31219560B0; Thu, 21 Nov 2024 15:43:13 +0000 (UTC)",
            "from toolbox.redhat.com (unknown [10.42.28.5])\n by mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 2F2171956086; Thu, 21 Nov 2024 15:43:08 +0000 (UTC)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1732203797;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=q500sd/R/a7Oc6lEDFtNG88UxgBcWgktEG6Muqv7R+8=;\n b=NryQPFsVPJ3lMFeUNqcsFTg3h6/gumPaQvAnnezb8hZ3q7/R0N3sctrI75Y/KGcSnGBxyj\n Hc7m9gyXGTrBObZzdvY1vWjl5B8KUx6z0Pxuuvhet6olkDyVpljkBe7/A1cA89+5scllRH\n K5NIwtm89IVPlbvL+N8XLChSweXY6XA=",
        "X-MC-Unique": "QfD08tKLP9S1FhzFUitHIg-1",
        "X-Mimecast-MFC-AGG-ID": "QfD08tKLP9S1FhzFUitHIg",
        "From": "=?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>",
        "To": "qemu-devel@nongnu.org",
        "Cc": "Thomas Huth <thuth@redhat.com>, Ani Sinha <anisinha@redhat.com>,\n\t=?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n Peter Maydell <peter.maydell@linaro.org>, =?utf-8?q?Philippe_Mathieu-Daud?=\n\t=?utf-8?q?=C3=A9?= <philmd@linaro.org>,\n =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>",
        "Subject": "[PATCH v2 08/18] tests/functional: honour self.workdir in ACPI bits\n tests",
        "Date": "Thu, 21 Nov 2024 15:42:08 +0000",
        "Message-ID": "<20241121154218.1423005-9-berrange@redhat.com>",
        "In-Reply-To": "<20241121154218.1423005-1-berrange@redhat.com>",
        "References": "<20241121154218.1423005-1-berrange@redhat.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.15",
        "Received-SPF": "pass client-ip=170.10.129.124;\n envelope-from=berrange@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com",
        "X-Spam_score_int": "-21",
        "X-Spam_score": "-2.2",
        "X-Spam_bar": "--",
        "X-Spam_report": "(-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.14,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no",
        "X-Spam_action": "no action",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://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 <mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"
    },
    "content": "The ACPI bits test sets up its own private temporary directory into it\ncreates scratch files. This is justified by a suggestion that we need\nto be able to preserve the scratch files. We have the ability to\npreserve the scratch dir with our functional harness, so there's no\nreason to diverge from standard practice in file placement.\n\nReviewed-by: Alex Bennée <alex.bennee@linaro.org>\nSigned-off-by: Daniel P. Berrangé <berrange@redhat.com>\n---\n tests/functional/test_acpi_bits.py | 44 +++++++++---------------------\n 1 file changed, 13 insertions(+), 31 deletions(-)",
    "diff": "diff --git a/tests/functional/test_acpi_bits.py b/tests/functional/test_acpi_bits.py\nindex 4c192d95cc..3498b96787 100755\n--- a/tests/functional/test_acpi_bits.py\n+++ b/tests/functional/test_acpi_bits.py\n@@ -150,7 +150,6 @@ class AcpiBitsTest(QemuBaseTest): #pylint: disable=too-many-instance-attributes\n     def __init__(self, *args, **kwargs):\n         super().__init__(*args, **kwargs)\n         self._vm = None\n-        self._workDir = None\n         self._baseDir = None\n \n         self._debugcon_addr = '0x403'\n@@ -169,7 +168,7 @@ def copy_bits_config(self):\n         config_file = 'bits-cfg.txt'\n         bits_config_dir = os.path.join(self._baseDir, 'acpi-bits',\n                                        'bits-config')\n-        target_config_dir = os.path.join(self._workDir,\n+        target_config_dir = os.path.join(self.workdir,\n                                          'bits-%d' %self.BITS_INTERNAL_VER,\n                                          'boot')\n         self.assertTrue(os.path.exists(bits_config_dir))\n@@ -186,7 +185,7 @@ def copy_test_scripts(self):\n \n         bits_test_dir = os.path.join(self._baseDir, 'acpi-bits',\n                                      'bits-tests')\n-        target_test_dir = os.path.join(self._workDir,\n+        target_test_dir = os.path.join(self.workdir,\n                                        'bits-%d' %self.BITS_INTERNAL_VER,\n                                        'boot', 'python')\n \n@@ -225,8 +224,8 @@ def fix_mkrescue(self, mkrescue):\n             the directory where we have extracted our pre-built bits grub\n             tarball.\n         \"\"\"\n-        grub_x86_64_mods = os.path.join(self._workDir, 'grub-inst-x86_64-efi')\n-        grub_i386_mods = os.path.join(self._workDir, 'grub-inst')\n+        grub_x86_64_mods = os.path.join(self.workdir, 'grub-inst-x86_64-efi')\n+        grub_i386_mods = os.path.join(self.workdir, 'grub-inst')\n \n         self.assertTrue(os.path.exists(grub_x86_64_mods))\n         self.assertTrue(os.path.exists(grub_i386_mods))\n@@ -247,11 +246,11 @@ def generate_bits_iso(self):\n         \"\"\" Uses grub-mkrescue to generate a fresh bits iso with the python\n             test scripts\n         \"\"\"\n-        bits_dir = os.path.join(self._workDir,\n+        bits_dir = os.path.join(self.workdir,\n                                 'bits-%d' %self.BITS_INTERNAL_VER)\n-        iso_file = os.path.join(self._workDir,\n+        iso_file = os.path.join(self.workdir,\n                                 'bits-%d.iso' %self.BITS_INTERNAL_VER)\n-        mkrescue_script = os.path.join(self._workDir,\n+        mkrescue_script = os.path.join(self.workdir,\n                                        'grub-inst-x86_64-efi', 'bin',\n                                        'grub-mkrescue')\n \n@@ -290,17 +289,7 @@ def setUp(self): # pylint: disable=arguments-differ\n \n         self._baseDir = Path(__file__).parent\n \n-        # workdir could also be avocado's own workdir in self.workdir.\n-        # At present, I prefer to maintain my own temporary working\n-        # directory. It gives us more control over the generated bits\n-        # log files and also for debugging, we may chose not to remove\n-        # this working directory so that the logs and iso can be\n-        # inspected manually and archived if needed.\n-        self._workDir = tempfile.mkdtemp(prefix='acpi-bits-',\n-                                         suffix='.tmp')\n-        self.logger.info('working dir: %s', self._workDir)\n-\n-        prebuiltDir = os.path.join(self._workDir, 'prebuilt')\n+        prebuiltDir = os.path.join(self.workdir, 'prebuilt')\n         if not os.path.isdir(prebuiltDir):\n             os.mkdir(prebuiltDir, mode=0o775)\n \n@@ -321,10 +310,10 @@ def setUp(self): # pylint: disable=arguments-differ\n \n         # extract the bits software in the temp working directory\n         with zipfile.ZipFile(bits_zip_file, 'r') as zref:\n-            zref.extractall(self._workDir)\n+            zref.extractall(self.workdir)\n \n         with tarfile.open(grub_tar_file, 'r', encoding='utf-8') as tarball:\n-            tarball.extractall(self._workDir)\n+            tarball.extractall(self.workdir)\n \n         self.copy_test_scripts()\n         self.copy_bits_config()\n@@ -334,7 +323,7 @@ def parse_log(self):\n         \"\"\"parse the log generated by running bits tests and\n            check for failures.\n         \"\"\"\n-        debugconf = os.path.join(self._workDir, self._debugcon_log)\n+        debugconf = os.path.join(self.workdir, self._debugcon_log)\n         log = \"\"\n         with open(debugconf, 'r', encoding='utf-8') as filehandle:\n             log = filehandle.read()\n@@ -360,25 +349,18 @@ def tearDown(self):\n         \"\"\"\n         if self._vm:\n             self.assertFalse(not self._vm.is_running)\n-        if not os.getenv('BITS_DEBUG') and self._workDir:\n-            self.logger.info('removing the work directory %s', self._workDir)\n-            shutil.rmtree(self._workDir)\n-        else:\n-            self.logger.info('not removing the work directory %s ' \\\n-                             'as BITS_DEBUG is ' \\\n-                             'passed in the environment', self._workDir)\n         super().tearDown()\n \n     def test_acpi_smbios_bits(self):\n         \"\"\"The main test case implementation.\"\"\"\n \n-        iso_file = os.path.join(self._workDir,\n+        iso_file = os.path.join(self.workdir,\n                                 'bits-%d.iso' %self.BITS_INTERNAL_VER)\n \n         self.assertTrue(os.access(iso_file, os.R_OK))\n \n         self._vm = QEMUBitsMachine(binary=self.qemu_bin,\n-                                   base_temp_dir=self._workDir,\n+                                   base_temp_dir=self.workdir,\n                                    debugcon_log=self._debugcon_log,\n                                    debugcon_addr=self._debugcon_addr)\n \n",
    "prefixes": [
        "v2",
        "08/18"
    ]
}