get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2206444,
    "url": "http://patchwork.ozlabs.org/api/patches/2206444/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260306181304.2426352-3-sjg@chromium.org/",
    "project": {
        "id": 18,
        "url": "http://patchwork.ozlabs.org/api/projects/18/?format=api",
        "name": "U-Boot",
        "link_name": "uboot",
        "list_id": "u-boot.lists.denx.de",
        "list_email": "u-boot@lists.denx.de",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260306181304.2426352-3-sjg@chromium.org>",
    "list_archive_url": null,
    "date": "2026-03-06T18:12:30",
    "name": "[v2,02/23] binman: test: Move pack/layout test files to test/pack/",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "6f3145295688624ad4776071e7a0c9d8e2aa31b3",
    "submitter": {
        "id": 6170,
        "url": "http://patchwork.ozlabs.org/api/people/6170/?format=api",
        "name": "Simon Glass",
        "email": "sjg@chromium.org"
    },
    "delegate": {
        "id": 3184,
        "url": "http://patchwork.ozlabs.org/api/users/3184/?format=api",
        "username": "sjg",
        "first_name": "Simon",
        "last_name": "Glass",
        "email": "sjg@chromium.org"
    },
    "mbox": "http://patchwork.ozlabs.org/project/uboot/patch/20260306181304.2426352-3-sjg@chromium.org/mbox/",
    "series": [
        {
            "id": 494765,
            "url": "http://patchwork.ozlabs.org/api/series/494765/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/uboot/list/?series=494765",
            "date": "2026-03-06T18:12:28",
            "name": "binman: test: Organise test files into subdirectories",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/494765/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2206444/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2206444/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<u-boot-bounces@lists.denx.de>",
        "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=chromium.org header.i=@chromium.org header.a=rsa-sha256\n header.s=google header.b=e96gwBRJ;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)",
            "phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=chromium.org",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de",
            "phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=chromium.org header.i=@chromium.org\n header.b=\"e96gwBRJ\";\n\tdkim-atps=neutral",
            "phobos.denx.de;\n dmarc=pass (p=none dis=none) header.from=chromium.org",
            "phobos.denx.de;\n spf=pass smtp.mailfrom=sjg@chromium.org"
        ],
        "Received": [
            "from phobos.denx.de (phobos.denx.de\n [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fSF0N4N8Mz1xyN\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 07 Mar 2026 05:13:56 +1100 (AEDT)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id B2B4383F1F;\n\tFri,  6 Mar 2026 19:13:38 +0100 (CET)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 974DE83F9B; Fri,  6 Mar 2026 19:13:37 +0100 (CET)",
            "from mail-qk1-x735.google.com (mail-qk1-x735.google.com\n [IPv6:2607:f8b0:4864:20::735])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 5A97C83B86\n for <u-boot@lists.denx.de>; Fri,  6 Mar 2026 19:13:34 +0100 (CET)",
            "by mail-qk1-x735.google.com with SMTP id\n af79cd13be357-8cb4acdacb2so1213699385a.3\n for <u-boot@lists.denx.de>; Fri, 06 Mar 2026 10:13:34 -0800 (PST)",
            "from chromium.org ([73.34.74.121]) by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8cd6f5736c0sm155930885a.49.2026.03.06.10.13.30\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 06 Mar 2026 10:13:31 -0800 (PST)"
        ],
        "X-Spam-Checker-Version": "SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de",
        "X-Spam-Level": "",
        "X-Spam-Status": "No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,\n DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham\n autolearn_force=no version=3.4.2",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=chromium.org; s=google; t=1772820813; x=1773425613; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=+fuzzJM1yKdvb1MSn9qa7OyUypJfJ4xtEHsbqCspF9E=;\n b=e96gwBRJarIeFpejJ+4h8nzzyL/G/De9bhlYTJfB+qT31wzEDUStnw3FGAdDf0Axpr\n gpkH93fjpIHPWkH3MenEsal27J1sQcCJR86ts4ZEqaoFYiE4DPYmneTz2j9ulbdo+eKL\n oLLF0OvqYNYQ+IRK917vDAi5/l+vn2yuhZ5kY=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1772820813; x=1773425613;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=+fuzzJM1yKdvb1MSn9qa7OyUypJfJ4xtEHsbqCspF9E=;\n b=DjGKukq2wf5AQfy8dsBvOhW+eyB4BrxBSOuGRRHuckRPUgn5W76K8RvuhAGF3OtOMJ\n ZKrBBeQWyNTkeqdip1BRhKoEKwrUo3+/EJxQiGBZ5BfLDvQvNTat4tLi/VyNKz4Q6Qec\n 8xxIoelB22sB/EPoTR69CG4uycFbfuHslLRG/zPZ/L/2/qIMPtUl4vm1uAdXt02uY6x0\n WdDGhrOI7B8yvFF7bouhPGq7Erq2k0DiEYiaP0X9PY4JK8xcJifBLBVo5Tcmd9DR61dq\n 0awR51yLRC0VpbAnoKOTECRWTQuLZARFbVxL5EJi/Z8YkNNWqziZjFzdaXZVavux+9Ip\n zBGQ==",
        "X-Gm-Message-State": "AOJu0YyUKnbF9DaNcJYEvy1l11Cho3NQEeuANtqUfueudQKSC8nOyLet\n KLTrImjWPDrOLmCSPQV5MDZFGQ30eMQ7PhRKJzgTUAhBqq0R2tGdEGKelOy3UHcIFafpzyI6OoA\n XsQw=",
        "X-Gm-Gg": "ATEYQzxqNkeru2ODArDnwMeALuYxgXh827QKwJUPN0Zv/5Nn6pFsQHqyL36MfYHbbbu\n 6RijFNR+KxUUXhI+7qnCmuprii4SxafCWiWNoA4HAOVotuoL3wpKxEUVkfp7ldyGEi4Wryj/kqK\n XIezvAXssKAT9VCIzMY02GZwoka1ZfXL+t5QDYnD7ZC+WqW2AeT64T+FO4LHVjJJguiTRBUqxVq\n r7SgYuXdmSeE67Kqc1FkiiKLc82vjoISjHcOD5WMcuIbeD27ysJSbIkYZ89li5VWd0FhZgmfWBC\n JBmf0rlW1ED6TdzonUdBA9DylIwop2riGfZ5bT2cSiObkKOnmWLBxsnwcwSaGTxtaBJAGoEGefF\n qq/FDhRmtrHrUIsyhBjzD2zUJ9jZw+CoiS3Gl6CkfWJFZteHe2HNSylxUKKFp2+7xnSUeUYXVl9\n bsC3UIQsMSBGNBedALSQ==",
        "X-Received": "by 2002:a05:620a:4093:b0:8c9:fb26:dc6e with SMTP id\n af79cd13be357-8cd6d4b4efamr402776585a.38.1772820812339;\n Fri, 06 Mar 2026 10:13:32 -0800 (PST)",
        "From": "Simon Glass <sjg@chromium.org>",
        "To": "u-boot@lists.denx.de",
        "Cc": "Tom Rini <trini@konsulko.com>, Quentin Schulz <quentin.schulz@cherry.de>,\n Simon Glass <simon.glass@canonical.com>,\n Alper Nebi Yasak <alpernebiyasak@gmail.com>, Bryan Brattlof <bb@ti.com>,\n Neha Malcom Francis <n-francis@ti.com>, Peng Fan <peng.fan@nxp.com>,\n Philippe Reynes <philippe.reynes@softathome.com>,\n Simon Glass <sjg@chromium.org>,\n Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>,\n Yannic Moog <y.moog@phytec.de>",
        "Subject": "[PATCH v2 02/23] binman: test: Move pack/layout test files to\n test/pack/",
        "Date": "Fri,  6 Mar 2026 11:12:30 -0700",
        "Message-ID": "<20260306181304.2426352-3-sjg@chromium.org>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20260306181304.2426352-1-sjg@chromium.org>",
        "References": "<20260306181304.2426352-1-sjg@chromium.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "u-boot@lists.denx.de",
        "X-Mailman-Version": "2.1.39",
        "Precedence": "list",
        "List-Id": "U-Boot discussion <u-boot.lists.denx.de>",
        "List-Unsubscribe": "<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>",
        "List-Archive": "<https://lists.denx.de/pipermail/u-boot/>",
        "List-Post": "<mailto:u-boot@lists.denx.de>",
        "List-Help": "<mailto:u-boot-request@lists.denx.de?subject=help>",
        "List-Subscribe": "<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>",
        "Errors-To": "u-boot-bounces@lists.denx.de",
        "Sender": "\"U-Boot\" <u-boot-bounces@lists.denx.de>",
        "X-Virus-Scanned": "clamav-milter 0.103.8 at phobos.denx.de",
        "X-Virus-Status": "Clean"
    },
    "content": "From: Simon Glass <simon.glass@canonical.com>\n\nMove about 50 test files related to basic layout, packing, alignment,\nsections, and image structure into a pack/ subdirectory. Drop the\nnumeric prefixes from the filenames and update all references in\nftest.py, entry_test.py, and binman_tests.rst\n\nSigned-off-by: Simon Glass <simon.glass@canonical.com>\nReviewed-by: Quentin Schulz <quentin.schulz@cherry.de>\n---\n\n(no changes since v1)\n\n doc/develop/binman_tests.rst                  |   2 +-\n tools/binman/entry_test.py                    |   2 +-\n tools/binman/ftest.py                         | 120 +++++++++---------\n .../4gb_and_skip_at_start_together.dts}       |   0\n .../align_default.dts}                        |   0\n .../assume_size.dts}                          |   0\n .../assume_size_ok.dts}                       |   0\n .../{007_bad_align.dts => pack/bad_align.dts} |   0\n .../change_size.dts}                          |   0\n .../dual_image.dts}                           |   0\n .../test/{003_empty.dts => pack/empty.dts}    |   0\n .../entry_extend.dts}                         |   0\n .../entry_extend_section.dts}                 |   0\n .../entry_extend_twice.dts}                   |   0\n .../entry_shrink.dts}                         |   0\n .../expand_size_bad.dts}                      |   0\n .../extend_size.dts}                          |   0\n .../extend_size_bad.dts}                      |   0\n .../image_name.dts}                           |   0\n .../{021_image_pad.dts => pack/image_pad.dts} |   0\n .../{001_invalid.dts => pack/invalid.dts}     |   0\n .../invalid_entry.dts}                        |   0\n .../missing_node.dts}                         |   0\n .../test/{008_pack.dts => pack/pack.dts}      |   0\n .../pack_4gb_no_size.dts}                     |   0\n .../pack_4gb_outside.dts}                     |   0\n .../pack_align_power2.dts}                    |   0\n .../pack_align_section.dts}                   |   0\n .../pack_align_size_power2.dts}               |   0\n .../pack_extra.dts}                           |   0\n .../pack_image_align.dts}                     |   0\n .../pack_image_overflow.dts}                  |   0\n .../pack_image_size.dts}                      |   0\n .../pack_inv_align.dts}                       |   0\n .../pack_inv_image_align.dts}                 |   0\n .../pack_inv_image_align_power2.dts}          |   0\n .../pack_inv_size_align.dts}                  |   0\n .../pack_overflow.dts}                        |   0\n .../pack_overlap.dts}                         |   0\n .../pack_overlap_zero.dts}                    |   0\n .../pack_zero_size.dts}                       |   0\n .../pad_in_sections.dts}                      |   0\n .../section_align.dts}                        |   0\n .../section_inner.dts}                        |   0\n .../section_pad.dts}                          |   0\n .../sections_offset.dts}                      |   0\n .../test/{005_simple.dts => pack/simple.dts}  |   0\n .../skip_at_start.dts}                        |   0\n .../skip_at_start_pad.dts}                    |   0\n .../skip_at_start_section_pad.dts}            |   0\n .../test/{024_sorted.dts => pack/sorted.dts}  |   0\n .../unit_address.dts}                         |   0\n .../{079_uses_pos.dts => pack/uses_pos.dts}   |   0\n 53 files changed, 62 insertions(+), 62 deletions(-)\n rename tools/binman/test/{098_4gb_and_skip_at_start_together.dts => pack/4gb_and_skip_at_start_together.dts} (100%)\n rename tools/binman/test/{200_align_default.dts => pack/align_default.dts} (100%)\n rename tools/binman/test/{326_assume_size.dts => pack/assume_size.dts} (100%)\n rename tools/binman/test/{327_assume_size_ok.dts => pack/assume_size_ok.dts} (100%)\n rename tools/binman/test/{007_bad_align.dts => pack/bad_align.dts} (100%)\n rename tools/binman/test/{059_change_size.dts => pack/change_size.dts} (100%)\n rename tools/binman/test/{006_dual_image.dts => pack/dual_image.dts} (100%)\n rename tools/binman/test/{003_empty.dts => pack/empty.dts} (100%)\n rename tools/binman/test/{121_entry_extend.dts => pack/entry_extend.dts} (100%)\n rename tools/binman/test/{123_entry_extend_section.dts => pack/entry_extend_section.dts} (100%)\n rename tools/binman/test/{122_entry_extend_twice.dts => pack/entry_extend_twice.dts} (100%)\n rename tools/binman/test/{140_entry_shrink.dts => pack/entry_shrink.dts} (100%)\n rename tools/binman/test/{225_expand_size_bad.dts => pack/expand_size_bad.dts} (100%)\n rename tools/binman/test/{088_extend_size.dts => pack/extend_size.dts} (100%)\n rename tools/binman/test/{089_extend_size_bad.dts => pack/extend_size_bad.dts} (100%)\n rename tools/binman/test/{022_image_name.dts => pack/image_name.dts} (100%)\n rename tools/binman/test/{021_image_pad.dts => pack/image_pad.dts} (100%)\n rename tools/binman/test/{001_invalid.dts => pack/invalid.dts} (100%)\n rename tools/binman/test/{004_invalid_entry.dts => pack/invalid_entry.dts} (100%)\n rename tools/binman/test/{002_missing_node.dts => pack/missing_node.dts} (100%)\n rename tools/binman/test/{008_pack.dts => pack/pack.dts} (100%)\n rename tools/binman/test/{027_pack_4gb_no_size.dts => pack/pack_4gb_no_size.dts} (100%)\n rename tools/binman/test/{028_pack_4gb_outside.dts => pack/pack_4gb_outside.dts} (100%)\n rename tools/binman/test/{010_pack_align_power2.dts => pack/pack_align_power2.dts} (100%)\n rename tools/binman/test/{131_pack_align_section.dts => pack/pack_align_section.dts} (100%)\n rename tools/binman/test/{011_pack_align_size_power2.dts => pack/pack_align_size_power2.dts} (100%)\n rename tools/binman/test/{009_pack_extra.dts => pack/pack_extra.dts} (100%)\n rename tools/binman/test/{018_pack_image_align.dts => pack/pack_image_align.dts} (100%)\n rename tools/binman/test/{016_pack_image_overflow.dts => pack/pack_image_overflow.dts} (100%)\n rename tools/binman/test/{017_pack_image_size.dts => pack/pack_image_size.dts} (100%)\n rename tools/binman/test/{012_pack_inv_align.dts => pack/pack_inv_align.dts} (100%)\n rename tools/binman/test/{019_pack_inv_image_align.dts => pack/pack_inv_image_align.dts} (100%)\n rename tools/binman/test/{020_pack_inv_image_align_power2.dts => pack/pack_inv_image_align_power2.dts} (100%)\n rename tools/binman/test/{013_pack_inv_size_align.dts => pack/pack_inv_size_align.dts} (100%)\n rename tools/binman/test/{015_pack_overflow.dts => pack/pack_overflow.dts} (100%)\n rename tools/binman/test/{014_pack_overlap.dts => pack/pack_overlap.dts} (100%)\n rename tools/binman/test/{160_pack_overlap_zero.dts => pack/pack_overlap_zero.dts} (100%)\n rename tools/binman/test/{025_pack_zero_size.dts => pack/pack_zero_size.dts} (100%)\n rename tools/binman/test/{166_pad_in_sections.dts => pack/pad_in_sections.dts} (100%)\n rename tools/binman/test/{181_section_align.dts => pack/section_align.dts} (100%)\n rename tools/binman/test/{267_section_inner.dts => pack/section_inner.dts} (100%)\n rename tools/binman/test/{180_section_pad.dts => pack/section_pad.dts} (100%)\n rename tools/binman/test/{101_sections_offset.dts => pack/sections_offset.dts} (100%)\n rename tools/binman/test/{005_simple.dts => pack/simple.dts} (100%)\n rename tools/binman/test/{177_skip_at_start.dts => pack/skip_at_start.dts} (100%)\n rename tools/binman/test/{178_skip_at_start_pad.dts => pack/skip_at_start_pad.dts} (100%)\n rename tools/binman/test/{179_skip_at_start_section_pad.dts => pack/skip_at_start_section_pad.dts} (100%)\n rename tools/binman/test/{024_sorted.dts => pack/sorted.dts} (100%)\n rename tools/binman/test/{054_unit_address.dts => pack/unit_address.dts} (100%)\n rename tools/binman/test/{079_uses_pos.dts => pack/uses_pos.dts} (100%)",
    "diff": "diff --git a/doc/develop/binman_tests.rst b/doc/develop/binman_tests.rst\nindex 5e44686b8ad..745ca259d44 100644\n--- a/doc/develop/binman_tests.rst\n+++ b/doc/develop/binman_tests.rst\n@@ -331,7 +331,7 @@ Here is a simple test:\n \n     def testSimple(self):\n         \"\"\"Test a simple binman with a single file\"\"\"\n-        data = self._DoReadFile('005_simple.dts')\n+        data = self._DoReadFile('pack/simple.dts')\n         self.assertEqual(U_BOOT_DATA, data)\n \n This test tells Binman to build an image using the description. Then it checks\ndiff --git a/tools/binman/entry_test.py b/tools/binman/entry_test.py\nindex 40d74d401a2..7f00358e008 100644\n--- a/tools/binman/entry_test.py\n+++ b/tools/binman/entry_test.py\n@@ -26,7 +26,7 @@ class TestEntry(unittest.TestCase):\n     def GetNode(self):\n         binman_dir = os.path.dirname(os.path.realpath(sys.argv[0]))\n         fname = fdt_util.EnsureCompiled(\n-            os.path.join(binman_dir,('test/005_simple.dts')))\n+            os.path.join(binman_dir,('test/pack/simple.dts')))\n         dtb = fdt.FdtScan(fname)\n         return dtb.GetNode('/binman/u-boot')\n \ndiff --git a/tools/binman/ftest.py b/tools/binman/ftest.py\nindex a96789d4f1c..bc6ebf8bcbf 100644\n--- a/tools/binman/ftest.py\n+++ b/tools/binman/ftest.py\n@@ -816,7 +816,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testBoard(self):\n         \"\"\"Test that we can run it with a specific board\"\"\"\n-        self._SetupDtb('005_simple.dts', 'sandbox/u-boot.dtb')\n+        self._SetupDtb('pack/simple.dts', 'sandbox/u-boot.dtb')\n         TestFunctional._MakeInputFile('sandbox/u-boot.bin', U_BOOT_DATA)\n         result = self._DoBinman('build', '-n', '-b', 'sandbox')\n         self.assertEqual(0, result)\n@@ -843,19 +843,19 @@ class TestFunctional(unittest.TestCase):\n         will come from the device-tree compiler (dtc).\n         \"\"\"\n         with self.assertRaises(Exception) as e:\n-            self._RunBinman('build', '-d', self.TestFile('001_invalid.dts'))\n+            self._RunBinman('build', '-d', self.TestFile('pack/invalid.dts'))\n         self.assertIn(\"FATAL ERROR: Unable to parse input tree\",\n                 str(e.exception))\n \n     def testMissingNode(self):\n         \"\"\"Test that a device tree without a 'binman' node generates an error\"\"\"\n         with self.assertRaises(Exception) as e:\n-            self._DoBinman('build', '-d', self.TestFile('002_missing_node.dts'))\n+            self._DoBinman('build', '-d', self.TestFile('pack/missing_node.dts'))\n         self.assertIn(\"does not have a 'binman' node\", str(e.exception))\n \n     def testEmpty(self):\n         \"\"\"Test that an empty binman node works OK (i.e. does nothing)\"\"\"\n-        result = self._RunBinman('build', '-d', self.TestFile('003_empty.dts'))\n+        result = self._RunBinman('build', '-d', self.TestFile('pack/empty.dts'))\n         self.assertEqual(0, len(result.stderr))\n         self.assertEqual(0, result.return_code)\n \n@@ -863,25 +863,25 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test that an invalid entry is flagged\"\"\"\n         with self.assertRaises(Exception) as e:\n             result = self._RunBinman('build', '-d',\n-                                     self.TestFile('004_invalid_entry.dts'))\n+                                     self.TestFile('pack/invalid_entry.dts'))\n         self.assertIn(\"Unknown entry type 'not-a-valid-type' in node \"\n                 \"'/binman/not-a-valid-type'\", str(e.exception))\n \n     def testSimple(self):\n         \"\"\"Test a simple binman with a single file\"\"\"\n-        data = self._DoReadFile('005_simple.dts')\n+        data = self._DoReadFile('pack/simple.dts')\n         self.assertEqual(U_BOOT_DATA, data)\n \n     def testSimpleDebug(self):\n         \"\"\"Test a simple binman run with debugging enabled\"\"\"\n-        self._DoTestFile('005_simple.dts', debug=True)\n+        self._DoTestFile('pack/simple.dts', debug=True)\n \n     def testDual(self):\n         \"\"\"Test that we can handle creating two images\n \n         This also tests image padding.\n         \"\"\"\n-        retcode = self._DoTestFile('006_dual_image.dts')\n+        retcode = self._DoTestFile('pack/dual_image.dts')\n         self.assertEqual(0, retcode)\n \n         image = control.images['image1']\n@@ -905,13 +905,13 @@ class TestFunctional(unittest.TestCase):\n     def testBadAlign(self):\n         \"\"\"Test that an invalid alignment value is detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('007_bad_align.dts')\n+            self._DoTestFile('pack/bad_align.dts')\n         self.assertIn(\"Node '/binman/u-boot': Alignment 23 must be a power \"\n                       \"of two\", str(e.exception))\n \n     def testPackSimple(self):\n         \"\"\"Test that packing works as expected\"\"\"\n-        retcode = self._DoTestFile('008_pack.dts')\n+        retcode = self._DoTestFile('pack/pack.dts')\n         self.assertEqual(0, retcode)\n         self.assertIn('image', control.images)\n         image = control.images['image']\n@@ -953,7 +953,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testPackExtra(self):\n         \"\"\"Test that extra packing feature works as expected\"\"\"\n-        data, _, _, out_dtb_fname = self._DoReadFileDtb('009_pack_extra.dts',\n+        data, _, _, out_dtb_fname = self._DoReadFileDtb('pack/pack_extra.dts',\n                                                         update_dtb=True)\n \n         self.assertIn('image', control.images)\n@@ -1059,35 +1059,35 @@ class TestFunctional(unittest.TestCase):\n     def testPackAlignPowerOf2(self):\n         \"\"\"Test that invalid entry alignment is detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('010_pack_align_power2.dts')\n+            self._DoTestFile('pack/pack_align_power2.dts')\n         self.assertIn(\"Node '/binman/u-boot': Alignment 5 must be a power \"\n                       \"of two\", str(e.exception))\n \n     def testPackAlignSizePowerOf2(self):\n         \"\"\"Test that invalid entry size alignment is detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('011_pack_align_size_power2.dts')\n+            self._DoTestFile('pack/pack_align_size_power2.dts')\n         self.assertIn(\"Node '/binman/u-boot': Alignment size 55 must be a \"\n                       \"power of two\", str(e.exception))\n \n     def testPackInvalidAlign(self):\n         \"\"\"Test detection of an offset that does not match its alignment\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('012_pack_inv_align.dts')\n+            self._DoTestFile('pack/pack_inv_align.dts')\n         self.assertIn(\"Node '/binman/u-boot': Offset 0x5 (5) does not match \"\n                       \"align 0x4 (4)\", str(e.exception))\n \n     def testPackInvalidSizeAlign(self):\n         \"\"\"Test that invalid entry size alignment is detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('013_pack_inv_size_align.dts')\n+            self._DoTestFile('pack/pack_inv_size_align.dts')\n         self.assertIn(\"Node '/binman/u-boot': Size 0x5 (5) does not match \"\n                       \"align-size 0x4 (4)\", str(e.exception))\n \n     def testPackOverlap(self):\n         \"\"\"Test that overlapping regions are detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('014_pack_overlap.dts')\n+            self._DoTestFile('pack/pack_overlap.dts')\n         self.assertIn(\"Node '/binman/u-boot-align': Offset 0x3 (3) overlaps \"\n                       \"with previous entry '/binman/u-boot' ending at 0x4 (4)\",\n                       str(e.exception))\n@@ -1095,20 +1095,20 @@ class TestFunctional(unittest.TestCase):\n     def testPackEntryOverflow(self):\n         \"\"\"Test that entries that overflow their size are detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('015_pack_overflow.dts')\n+            self._DoTestFile('pack/pack_overflow.dts')\n         self.assertIn(\"Node '/binman/u-boot': Entry contents size is 0x4 (4) \"\n                       \"but entry size is 0x3 (3)\", str(e.exception))\n \n     def testPackImageOverflow(self):\n         \"\"\"Test that entries which overflow the image size are detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('016_pack_image_overflow.dts')\n+            self._DoTestFile('pack/pack_image_overflow.dts')\n         self.assertIn(\"Section '/binman': contents size 0x4 (4) exceeds section \"\n                       \"size 0x3 (3)\", str(e.exception))\n \n     def testPackImageSize(self):\n         \"\"\"Test that the image size can be set\"\"\"\n-        retcode = self._DoTestFile('017_pack_image_size.dts')\n+        retcode = self._DoTestFile('pack/pack_image_size.dts')\n         self.assertEqual(0, retcode)\n         self.assertIn('image', control.images)\n         image = control.images['image']\n@@ -1116,7 +1116,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testPackImageSizeAlign(self):\n         \"\"\"Test that image size alignemnt works as expected\"\"\"\n-        retcode = self._DoTestFile('018_pack_image_align.dts')\n+        retcode = self._DoTestFile('pack/pack_image_align.dts')\n         self.assertEqual(0, retcode)\n         self.assertIn('image', control.images)\n         image = control.images['image']\n@@ -1125,27 +1125,27 @@ class TestFunctional(unittest.TestCase):\n     def testPackInvalidImageAlign(self):\n         \"\"\"Test that invalid image alignment is detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('019_pack_inv_image_align.dts')\n+            self._DoTestFile('pack/pack_inv_image_align.dts')\n         self.assertIn(\"Section '/binman': Size 0x7 (7) does not match \"\n                       \"align-size 0x8 (8)\", str(e.exception))\n \n     def testPackAlignPowerOf2Inv(self):\n         \"\"\"Test that invalid image alignment is detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('020_pack_inv_image_align_power2.dts')\n+            self._DoTestFile('pack/pack_inv_image_align_power2.dts')\n         self.assertIn(\"Image '/binman': Alignment size 131 must be a power of \"\n                       \"two\", str(e.exception))\n \n     def testImagePadByte(self):\n         \"\"\"Test that the image pad byte can be specified\"\"\"\n         self._SetupSplElf()\n-        data = self._DoReadFile('021_image_pad.dts')\n+        data = self._DoReadFile('pack/image_pad.dts')\n         self.assertEqual(U_BOOT_SPL_DATA + tools.get_bytes(0xff, 1) +\n                          U_BOOT_DATA, data)\n \n     def testImageName(self):\n         \"\"\"Test that image files can be named\"\"\"\n-        retcode = self._DoTestFile('022_image_name.dts')\n+        retcode = self._DoTestFile('pack/image_name.dts')\n         self.assertEqual(0, retcode)\n         image = control.images['image1']\n         fname = tools.get_output_filename('test-name')\n@@ -1163,7 +1163,7 @@ class TestFunctional(unittest.TestCase):\n     def testPackSorted(self):\n         \"\"\"Test that entries can be sorted\"\"\"\n         self._SetupSplElf()\n-        data = self._DoReadFile('024_sorted.dts')\n+        data = self._DoReadFile('pack/sorted.dts')\n         self.assertEqual(tools.get_bytes(0, 1) + U_BOOT_SPL_DATA +\n                          tools.get_bytes(0, 2) + U_BOOT_DATA, data)\n \n@@ -1171,7 +1171,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test that an entry at offset 0 is not given a new offset\"\"\"\n         self._SetupSplElf()\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('025_pack_zero_size.dts')\n+            self._DoTestFile('pack/pack_zero_size.dts')\n         self.assertIn(\"Node '/binman/u-boot-spl': Offset 0x0 (0) overlaps \"\n                       \"with previous entry '/binman/u-boot' ending at 0x4 (4)\",\n                       str(e.exception))\n@@ -1185,7 +1185,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test that the end-at-4gb property requires a size property\"\"\"\n         self._SetupSplElf()\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('027_pack_4gb_no_size.dts')\n+            self._DoTestFile('pack/pack_4gb_no_size.dts')\n         self.assertIn(\"Image '/binman': Section size must be provided when \"\n                       \"using end-at-4gb\", str(e.exception))\n \n@@ -1194,7 +1194,7 @@ class TestFunctional(unittest.TestCase):\n         together\"\"\"\n         self._SetupSplElf()\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('098_4gb_and_skip_at_start_together.dts')\n+            self._DoTestFile('pack/4gb_and_skip_at_start_together.dts')\n         self.assertIn(\"Image '/binman': Provide either 'end-at-4gb' or \"\n                       \"'skip-at-start'\", str(e.exception))\n \n@@ -1202,7 +1202,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test that the end-at-4gb property checks for offset boundaries\"\"\"\n         self._SetupSplElf()\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('028_pack_4gb_outside.dts')\n+            self._DoTestFile('pack/pack_4gb_outside.dts')\n         self.assertIn(\"Node '/binman/u-boot': Offset 0x0 (0) size 0x4 (4) \"\n                       \"is outside the section '/binman' starting at \"\n                       '0xffffffe0 (4294967264) of size 0x20 (32)',\n@@ -1621,7 +1621,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testPackUnitAddress(self):\n         \"\"\"Test that we support multiple binaries with the same name\"\"\"\n-        data = self._DoReadFile('054_unit_address.dts')\n+        data = self._DoReadFile('pack/unit_address.dts')\n         self.assertEqual(U_BOOT_DATA + U_BOOT_DATA, data)\n \n     def testSections(self):\n@@ -1669,7 +1669,7 @@ class TestFunctional(unittest.TestCase):\n         try:\n             state.SetAllowEntryExpansion(False)\n             with self.assertRaises(ValueError) as e:\n-                self._DoReadFile('059_change_size.dts', True)\n+                self._DoReadFile('pack/change_size.dts', True)\n             self.assertIn(\"Node '/binman/_testing': Cannot update entry size from 2 to 3\",\n                           str(e.exception))\n         finally:\n@@ -2037,7 +2037,7 @@ class TestFunctional(unittest.TestCase):\n     def testUsesPos(self):\n         \"\"\"Test that the 'pos' property cannot be used anymore\"\"\"\n         with self.assertRaises(ValueError) as e:\n-           data = self._DoReadFile('079_uses_pos.dts')\n+           data = self._DoReadFile('pack/uses_pos.dts')\n         self.assertIn(\"Node '/binman/u-boot': Please use 'offset' instead of \"\n                       \"'pos'\", str(e.exception))\n \n@@ -2065,7 +2065,7 @@ class TestFunctional(unittest.TestCase):\n         # We should only get the expected message in verbose mode\n         for verbosity in (0, 2):\n             with terminal.capture() as (stdout, stderr):\n-                retcode = self._DoTestFile('006_dual_image.dts',\n+                retcode = self._DoTestFile('pack/dual_image.dts',\n                                            verbosity=verbosity,\n                                            images=['image2'])\n             self.assertEqual(0, retcode)\n@@ -2231,7 +2231,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testExtendSize(self):\n         \"\"\"Test an extending entry\"\"\"\n-        data, _, map_data, _ = self._DoReadFileDtb('088_extend_size.dts',\n+        data, _, map_data, _ = self._DoReadFileDtb('pack/extend_size.dts',\n                                                    map=True)\n         expect = (tools.get_bytes(ord('a'), 8) + U_BOOT_DATA +\n                   MRC_DATA + tools.get_bytes(ord('b'), 1) + U_BOOT_DATA +\n@@ -2255,7 +2255,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test an extending entry which fails to provide contents\"\"\"\n         with terminal.capture() as (stdout, stderr):\n             with self.assertRaises(ValueError) as e:\n-                self._DoReadFileDtb('089_extend_size_bad.dts', map=True)\n+                self._DoReadFileDtb('pack/extend_size_bad.dts', map=True)\n         self.assertIn(\"Node '/binman/_testing': Cannot obtain contents when \"\n                       'expanding entry', str(e.exception))\n \n@@ -2384,7 +2384,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test that overlapping regions are detected\"\"\"\n         with terminal.capture() as (stdout, stderr):\n             with self.assertRaises(ValueError) as e:\n-                self._DoTestFile('014_pack_overlap.dts', map=True)\n+                self._DoTestFile('pack/pack_overlap.dts', map=True)\n         map_fname = tools.get_output_filename('image.map')\n         self.assertEqual(\"Wrote map file '%s' to show errors\\n\" % map_fname,\n                          stdout.getvalue())\n@@ -2406,7 +2406,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testSectionOffset(self):\n         \"\"\"Tests use of a section with an offset\"\"\"\n-        data, _, map_data, _ = self._DoReadFileDtb('101_sections_offset.dts',\n+        data, _, map_data, _ = self._DoReadFileDtb('pack/sections_offset.dts',\n                                                    map=True)\n         self.assertEqual('''ImagePos    Offset      Size  Name\n 00000000  00000000  00000038  image\n@@ -2691,7 +2691,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testEntryExpand(self):\n         \"\"\"Test extending an entry after it is packed\"\"\"\n-        data = self._DoReadFile('121_entry_extend.dts')\n+        data = self._DoReadFile('pack/entry_extend.dts')\n         self.assertEqual(b'aaa', data[:3])\n         self.assertEqual(U_BOOT_DATA, data[3:3 + len(U_BOOT_DATA)])\n         self.assertEqual(b'aaa', data[-3:])\n@@ -2699,13 +2699,13 @@ class TestFunctional(unittest.TestCase):\n     def testEntryExtendBad(self):\n         \"\"\"Test extending an entry after it is packed, twice\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFile('122_entry_extend_twice.dts')\n+            self._DoReadFile('pack/entry_extend_twice.dts')\n         self.assertIn(\"Image '/binman': Entries changed size after packing\",\n                       str(e.exception))\n \n     def testEntryExtendSection(self):\n         \"\"\"Test extending an entry within a section after it is packed\"\"\"\n-        data = self._DoReadFile('123_entry_extend_section.dts')\n+        data = self._DoReadFile('pack/entry_extend_section.dts')\n         self.assertEqual(b'aaa', data[:3])\n         self.assertEqual(U_BOOT_DATA, data[3:3 + len(U_BOOT_DATA)])\n         self.assertEqual(b'aaa', data[-3:])\n@@ -2845,7 +2845,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testFindFdtmapMissing(self):\n         \"\"\"Test failing to locate an FDP map\"\"\"\n-        data = self._DoReadFile('005_simple.dts')\n+        data = self._DoReadFile('pack/simple.dts')\n         self.assertEqual(None, fdtmap.LocateFdtmap(data))\n \n     def testFindImageHeader(self):\n@@ -2869,7 +2869,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testFindImageHeaderMissing(self):\n         \"\"\"Test failing to locate an image header\"\"\"\n-        data = self._DoReadFile('005_simple.dts')\n+        data = self._DoReadFile('pack/simple.dts')\n         self.assertEqual(None, image_header.LocateHeaderOffset(data))\n \n     def testReadImage(self):\n@@ -2899,7 +2899,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testReadImageFail(self):\n         \"\"\"Test failing to read an image image's FDT map\"\"\"\n-        self._DoReadFile('005_simple.dts')\n+        self._DoReadFile('pack/simple.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         with self.assertRaises(ValueError) as e:\n             image = Image.FromFile(image_fname)\n@@ -2944,7 +2944,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testListCmdFail(self):\n         \"\"\"Test failing to list an image\"\"\"\n-        self._DoReadFile('005_simple.dts')\n+        self._DoReadFile('pack/simple.dts')\n         tmpdir = None\n         try:\n             tmpdir, updated_fname = self._SetupImageInTmpdir()\n@@ -3236,7 +3236,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testPackAlignSection(self):\n         \"\"\"Test that sections can have alignment\"\"\"\n-        self._DoReadFile('131_pack_align_section.dts')\n+        self._DoReadFile('pack/pack_align_section.dts')\n \n         self.assertIn('image', control.images)\n         image = control.images['image']\n@@ -3533,7 +3533,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test contracting an entry after it is packed\"\"\"\n         try:\n             state.SetAllowEntryContraction(True)\n-            data = self._DoReadFileDtb('140_entry_shrink.dts',\n+            data = self._DoReadFileDtb('pack/entry_shrink.dts',\n                                        update_dtb=True)[0]\n         finally:\n             state.SetAllowEntryContraction(False)\n@@ -3543,7 +3543,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testEntryShrinkFail(self):\n         \"\"\"Test not being allowed to contract an entry after it is packed\"\"\"\n-        data = self._DoReadFileDtb('140_entry_shrink.dts', update_dtb=True)[0]\n+        data = self._DoReadFileDtb('pack/entry_shrink.dts', update_dtb=True)[0]\n \n         # In this case there is a spare byte at the end of the data. The size of\n         # the contents is only 1 byte but we still have the size before it\n@@ -3943,7 +3943,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testPackOverlapZero(self):\n         \"\"\"Test that zero-size overlapping regions are ignored\"\"\"\n-        self._DoTestFile('160_pack_overlap_zero.dts')\n+        self._DoTestFile('pack/pack_overlap_zero.dts')\n \n     def _CheckSimpleFitData(self, fit_data, kernel_data, fdt1_data):\n         # The data should be inside the FIT\n@@ -4173,7 +4173,7 @@ class TestFunctional(unittest.TestCase):\n     def testPadInSections(self):\n         \"\"\"Test pad-before, pad-after for entries in sections\"\"\"\n         data, _, _, out_dtb_fname = self._DoReadFileDtb(\n-            '166_pad_in_sections.dts', update_dtb=True)\n+            'pack/pad_in_sections.dts', update_dtb=True)\n         expected = (U_BOOT_DATA + tools.get_bytes(ord('!'), 12) +\n                     U_BOOT_DATA + tools.get_bytes(ord('!'), 6) +\n                     U_BOOT_DATA)\n@@ -4448,7 +4448,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testSkipAtStart(self):\n         \"\"\"Test handling of skip-at-start section\"\"\"\n-        data = self._DoReadFile('177_skip_at_start.dts')\n+        data = self._DoReadFile('pack/skip_at_start.dts')\n         self.assertEqual(U_BOOT_DATA, data)\n \n         image = control.images['image']\n@@ -4465,7 +4465,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testSkipAtStartPad(self):\n         \"\"\"Test handling of skip-at-start section with padded entry\"\"\"\n-        data = self._DoReadFile('178_skip_at_start_pad.dts')\n+        data = self._DoReadFile('pack/skip_at_start_pad.dts')\n         before = tools.get_bytes(0, 8)\n         after = tools.get_bytes(0, 4)\n         all = before + U_BOOT_DATA + after\n@@ -4485,7 +4485,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testSkipAtStartSectionPad(self):\n         \"\"\"Test handling of skip-at-start section with padding\"\"\"\n-        data = self._DoReadFile('179_skip_at_start_section_pad.dts')\n+        data = self._DoReadFile('pack/skip_at_start_section_pad.dts')\n         before = tools.get_bytes(0, 8)\n         after = tools.get_bytes(0, 4)\n         all = before + U_BOOT_DATA + after\n@@ -4506,7 +4506,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testSectionPad(self):\n         \"\"\"Testing padding with sections\"\"\"\n-        data = self._DoReadFile('180_section_pad.dts')\n+        data = self._DoReadFile('pack/section_pad.dts')\n         expected = (tools.get_bytes(ord('&'), 3) +\n                     tools.get_bytes(ord('!'), 5) +\n                     U_BOOT_DATA +\n@@ -4516,7 +4516,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testSectionAlign(self):\n         \"\"\"Testing alignment with sections\"\"\"\n-        data = self._DoReadFileDtb('181_section_align.dts', map=True)[0]\n+        data = self._DoReadFileDtb('pack/section_align.dts', map=True)[0]\n         expected = (b'\\0' +                         # fill section\n                     tools.get_bytes(ord('&'), 1) +   # padding to section align\n                     b'\\0' +                         # fill section\n@@ -5033,7 +5033,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testAlignDefault(self):\n         \"\"\"Test that default alignment works on sections\"\"\"\n-        data = self._DoReadFile('200_align_default.dts')\n+        data = self._DoReadFile('pack/align_default.dts')\n         expected = (U_BOOT_DATA + tools.get_bytes(0, 8 - len(U_BOOT_DATA)) +\n                     U_BOOT_DATA)\n         # Special alignment for section\n@@ -5618,7 +5618,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def test_uses_expand_size(self):\n         \"\"\"Test that the 'expand-size' property cannot be used anymore\"\"\"\n         with self.assertRaises(ValueError) as e:\n-           data = self._DoReadFile('225_expand_size_bad.dts')\n+           data = self._DoReadFile('pack/expand_size_bad.dts')\n         self.assertIn(\n             \"Node '/binman/u-boot': Please use 'extend-size' instead of 'expand-size'\",\n             str(e.exception))\n@@ -6580,7 +6580,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testSectionInner(self):\n         \"\"\"Test an inner section with a size\"\"\"\n-        data = self._DoReadFile('267_section_inner.dts')\n+        data = self._DoReadFile('pack/section_inner.dts')\n         expected = U_BOOT_DATA + tools.get_bytes(0, 12)\n         self.assertEqual(expected, data)\n \n@@ -7615,7 +7615,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def test_assume_size(self):\n         \"\"\"Test handling of the assume-size property for external blob\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('326_assume_size.dts', allow_missing=True,\n+            self._DoTestFile('pack/assume_size.dts', allow_missing=True,\n                              allow_fake_blobs=True)\n         self.assertIn(\"contents size 0xa (10) exceeds section size 0x9 (9)\",\n                       str(e.exception))\n@@ -7623,7 +7623,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def test_assume_size_ok(self):\n         \"\"\"Test handling of the assume-size where it fits OK\"\"\"\n         with terminal.capture() as (stdout, stderr):\n-            self._DoTestFile('327_assume_size_ok.dts', allow_missing=True,\n+            self._DoTestFile('pack/assume_size_ok.dts', allow_missing=True,\n                              allow_fake_blobs=True)\n         err = stderr.getvalue()\n         self.assertRegex(\n@@ -7633,7 +7633,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def test_assume_size_no_fake(self):\n         \"\"\"Test handling of the assume-size where it fits OK\"\"\"\n         with terminal.capture() as (stdout, stderr):\n-            self._DoTestFile('327_assume_size_ok.dts', allow_missing=True)\n+            self._DoTestFile('pack/assume_size_ok.dts', allow_missing=True)\n         err = stderr.getvalue()\n         self.assertRegex(\n             err,\ndiff --git a/tools/binman/test/098_4gb_and_skip_at_start_together.dts b/tools/binman/test/pack/4gb_and_skip_at_start_together.dts\nsimilarity index 100%\nrename from tools/binman/test/098_4gb_and_skip_at_start_together.dts\nrename to tools/binman/test/pack/4gb_and_skip_at_start_together.dts\ndiff --git a/tools/binman/test/200_align_default.dts b/tools/binman/test/pack/align_default.dts\nsimilarity index 100%\nrename from tools/binman/test/200_align_default.dts\nrename to tools/binman/test/pack/align_default.dts\ndiff --git a/tools/binman/test/326_assume_size.dts b/tools/binman/test/pack/assume_size.dts\nsimilarity index 100%\nrename from tools/binman/test/326_assume_size.dts\nrename to tools/binman/test/pack/assume_size.dts\ndiff --git a/tools/binman/test/327_assume_size_ok.dts b/tools/binman/test/pack/assume_size_ok.dts\nsimilarity index 100%\nrename from tools/binman/test/327_assume_size_ok.dts\nrename to tools/binman/test/pack/assume_size_ok.dts\ndiff --git a/tools/binman/test/007_bad_align.dts b/tools/binman/test/pack/bad_align.dts\nsimilarity index 100%\nrename from tools/binman/test/007_bad_align.dts\nrename to tools/binman/test/pack/bad_align.dts\ndiff --git a/tools/binman/test/059_change_size.dts b/tools/binman/test/pack/change_size.dts\nsimilarity index 100%\nrename from tools/binman/test/059_change_size.dts\nrename to tools/binman/test/pack/change_size.dts\ndiff --git a/tools/binman/test/006_dual_image.dts b/tools/binman/test/pack/dual_image.dts\nsimilarity index 100%\nrename from tools/binman/test/006_dual_image.dts\nrename to tools/binman/test/pack/dual_image.dts\ndiff --git a/tools/binman/test/003_empty.dts b/tools/binman/test/pack/empty.dts\nsimilarity index 100%\nrename from tools/binman/test/003_empty.dts\nrename to tools/binman/test/pack/empty.dts\ndiff --git a/tools/binman/test/121_entry_extend.dts b/tools/binman/test/pack/entry_extend.dts\nsimilarity index 100%\nrename from tools/binman/test/121_entry_extend.dts\nrename to tools/binman/test/pack/entry_extend.dts\ndiff --git a/tools/binman/test/123_entry_extend_section.dts b/tools/binman/test/pack/entry_extend_section.dts\nsimilarity index 100%\nrename from tools/binman/test/123_entry_extend_section.dts\nrename to tools/binman/test/pack/entry_extend_section.dts\ndiff --git a/tools/binman/test/122_entry_extend_twice.dts b/tools/binman/test/pack/entry_extend_twice.dts\nsimilarity index 100%\nrename from tools/binman/test/122_entry_extend_twice.dts\nrename to tools/binman/test/pack/entry_extend_twice.dts\ndiff --git a/tools/binman/test/140_entry_shrink.dts b/tools/binman/test/pack/entry_shrink.dts\nsimilarity index 100%\nrename from tools/binman/test/140_entry_shrink.dts\nrename to tools/binman/test/pack/entry_shrink.dts\ndiff --git a/tools/binman/test/225_expand_size_bad.dts b/tools/binman/test/pack/expand_size_bad.dts\nsimilarity index 100%\nrename from tools/binman/test/225_expand_size_bad.dts\nrename to tools/binman/test/pack/expand_size_bad.dts\ndiff --git a/tools/binman/test/088_extend_size.dts b/tools/binman/test/pack/extend_size.dts\nsimilarity index 100%\nrename from tools/binman/test/088_extend_size.dts\nrename to tools/binman/test/pack/extend_size.dts\ndiff --git a/tools/binman/test/089_extend_size_bad.dts b/tools/binman/test/pack/extend_size_bad.dts\nsimilarity index 100%\nrename from tools/binman/test/089_extend_size_bad.dts\nrename to tools/binman/test/pack/extend_size_bad.dts\ndiff --git a/tools/binman/test/022_image_name.dts b/tools/binman/test/pack/image_name.dts\nsimilarity index 100%\nrename from tools/binman/test/022_image_name.dts\nrename to tools/binman/test/pack/image_name.dts\ndiff --git a/tools/binman/test/021_image_pad.dts b/tools/binman/test/pack/image_pad.dts\nsimilarity index 100%\nrename from tools/binman/test/021_image_pad.dts\nrename to tools/binman/test/pack/image_pad.dts\ndiff --git a/tools/binman/test/001_invalid.dts b/tools/binman/test/pack/invalid.dts\nsimilarity index 100%\nrename from tools/binman/test/001_invalid.dts\nrename to tools/binman/test/pack/invalid.dts\ndiff --git a/tools/binman/test/004_invalid_entry.dts b/tools/binman/test/pack/invalid_entry.dts\nsimilarity index 100%\nrename from tools/binman/test/004_invalid_entry.dts\nrename to tools/binman/test/pack/invalid_entry.dts\ndiff --git a/tools/binman/test/002_missing_node.dts b/tools/binman/test/pack/missing_node.dts\nsimilarity index 100%\nrename from tools/binman/test/002_missing_node.dts\nrename to tools/binman/test/pack/missing_node.dts\ndiff --git a/tools/binman/test/008_pack.dts b/tools/binman/test/pack/pack.dts\nsimilarity index 100%\nrename from tools/binman/test/008_pack.dts\nrename to tools/binman/test/pack/pack.dts\ndiff --git a/tools/binman/test/027_pack_4gb_no_size.dts b/tools/binman/test/pack/pack_4gb_no_size.dts\nsimilarity index 100%\nrename from tools/binman/test/027_pack_4gb_no_size.dts\nrename to tools/binman/test/pack/pack_4gb_no_size.dts\ndiff --git a/tools/binman/test/028_pack_4gb_outside.dts b/tools/binman/test/pack/pack_4gb_outside.dts\nsimilarity index 100%\nrename from tools/binman/test/028_pack_4gb_outside.dts\nrename to tools/binman/test/pack/pack_4gb_outside.dts\ndiff --git a/tools/binman/test/010_pack_align_power2.dts b/tools/binman/test/pack/pack_align_power2.dts\nsimilarity index 100%\nrename from tools/binman/test/010_pack_align_power2.dts\nrename to tools/binman/test/pack/pack_align_power2.dts\ndiff --git a/tools/binman/test/131_pack_align_section.dts b/tools/binman/test/pack/pack_align_section.dts\nsimilarity index 100%\nrename from tools/binman/test/131_pack_align_section.dts\nrename to tools/binman/test/pack/pack_align_section.dts\ndiff --git a/tools/binman/test/011_pack_align_size_power2.dts b/tools/binman/test/pack/pack_align_size_power2.dts\nsimilarity index 100%\nrename from tools/binman/test/011_pack_align_size_power2.dts\nrename to tools/binman/test/pack/pack_align_size_power2.dts\ndiff --git a/tools/binman/test/009_pack_extra.dts b/tools/binman/test/pack/pack_extra.dts\nsimilarity index 100%\nrename from tools/binman/test/009_pack_extra.dts\nrename to tools/binman/test/pack/pack_extra.dts\ndiff --git a/tools/binman/test/018_pack_image_align.dts b/tools/binman/test/pack/pack_image_align.dts\nsimilarity index 100%\nrename from tools/binman/test/018_pack_image_align.dts\nrename to tools/binman/test/pack/pack_image_align.dts\ndiff --git a/tools/binman/test/016_pack_image_overflow.dts b/tools/binman/test/pack/pack_image_overflow.dts\nsimilarity index 100%\nrename from tools/binman/test/016_pack_image_overflow.dts\nrename to tools/binman/test/pack/pack_image_overflow.dts\ndiff --git a/tools/binman/test/017_pack_image_size.dts b/tools/binman/test/pack/pack_image_size.dts\nsimilarity index 100%\nrename from tools/binman/test/017_pack_image_size.dts\nrename to tools/binman/test/pack/pack_image_size.dts\ndiff --git a/tools/binman/test/012_pack_inv_align.dts b/tools/binman/test/pack/pack_inv_align.dts\nsimilarity index 100%\nrename from tools/binman/test/012_pack_inv_align.dts\nrename to tools/binman/test/pack/pack_inv_align.dts\ndiff --git a/tools/binman/test/019_pack_inv_image_align.dts b/tools/binman/test/pack/pack_inv_image_align.dts\nsimilarity index 100%\nrename from tools/binman/test/019_pack_inv_image_align.dts\nrename to tools/binman/test/pack/pack_inv_image_align.dts\ndiff --git a/tools/binman/test/020_pack_inv_image_align_power2.dts b/tools/binman/test/pack/pack_inv_image_align_power2.dts\nsimilarity index 100%\nrename from tools/binman/test/020_pack_inv_image_align_power2.dts\nrename to tools/binman/test/pack/pack_inv_image_align_power2.dts\ndiff --git a/tools/binman/test/013_pack_inv_size_align.dts b/tools/binman/test/pack/pack_inv_size_align.dts\nsimilarity index 100%\nrename from tools/binman/test/013_pack_inv_size_align.dts\nrename to tools/binman/test/pack/pack_inv_size_align.dts\ndiff --git a/tools/binman/test/015_pack_overflow.dts b/tools/binman/test/pack/pack_overflow.dts\nsimilarity index 100%\nrename from tools/binman/test/015_pack_overflow.dts\nrename to tools/binman/test/pack/pack_overflow.dts\ndiff --git a/tools/binman/test/014_pack_overlap.dts b/tools/binman/test/pack/pack_overlap.dts\nsimilarity index 100%\nrename from tools/binman/test/014_pack_overlap.dts\nrename to tools/binman/test/pack/pack_overlap.dts\ndiff --git a/tools/binman/test/160_pack_overlap_zero.dts b/tools/binman/test/pack/pack_overlap_zero.dts\nsimilarity index 100%\nrename from tools/binman/test/160_pack_overlap_zero.dts\nrename to tools/binman/test/pack/pack_overlap_zero.dts\ndiff --git a/tools/binman/test/025_pack_zero_size.dts b/tools/binman/test/pack/pack_zero_size.dts\nsimilarity index 100%\nrename from tools/binman/test/025_pack_zero_size.dts\nrename to tools/binman/test/pack/pack_zero_size.dts\ndiff --git a/tools/binman/test/166_pad_in_sections.dts b/tools/binman/test/pack/pad_in_sections.dts\nsimilarity index 100%\nrename from tools/binman/test/166_pad_in_sections.dts\nrename to tools/binman/test/pack/pad_in_sections.dts\ndiff --git a/tools/binman/test/181_section_align.dts b/tools/binman/test/pack/section_align.dts\nsimilarity index 100%\nrename from tools/binman/test/181_section_align.dts\nrename to tools/binman/test/pack/section_align.dts\ndiff --git a/tools/binman/test/267_section_inner.dts b/tools/binman/test/pack/section_inner.dts\nsimilarity index 100%\nrename from tools/binman/test/267_section_inner.dts\nrename to tools/binman/test/pack/section_inner.dts\ndiff --git a/tools/binman/test/180_section_pad.dts b/tools/binman/test/pack/section_pad.dts\nsimilarity index 100%\nrename from tools/binman/test/180_section_pad.dts\nrename to tools/binman/test/pack/section_pad.dts\ndiff --git a/tools/binman/test/101_sections_offset.dts b/tools/binman/test/pack/sections_offset.dts\nsimilarity index 100%\nrename from tools/binman/test/101_sections_offset.dts\nrename to tools/binman/test/pack/sections_offset.dts\ndiff --git a/tools/binman/test/005_simple.dts b/tools/binman/test/pack/simple.dts\nsimilarity index 100%\nrename from tools/binman/test/005_simple.dts\nrename to tools/binman/test/pack/simple.dts\ndiff --git a/tools/binman/test/177_skip_at_start.dts b/tools/binman/test/pack/skip_at_start.dts\nsimilarity index 100%\nrename from tools/binman/test/177_skip_at_start.dts\nrename to tools/binman/test/pack/skip_at_start.dts\ndiff --git a/tools/binman/test/178_skip_at_start_pad.dts b/tools/binman/test/pack/skip_at_start_pad.dts\nsimilarity index 100%\nrename from tools/binman/test/178_skip_at_start_pad.dts\nrename to tools/binman/test/pack/skip_at_start_pad.dts\ndiff --git a/tools/binman/test/179_skip_at_start_section_pad.dts b/tools/binman/test/pack/skip_at_start_section_pad.dts\nsimilarity index 100%\nrename from tools/binman/test/179_skip_at_start_section_pad.dts\nrename to tools/binman/test/pack/skip_at_start_section_pad.dts\ndiff --git a/tools/binman/test/024_sorted.dts b/tools/binman/test/pack/sorted.dts\nsimilarity index 100%\nrename from tools/binman/test/024_sorted.dts\nrename to tools/binman/test/pack/sorted.dts\ndiff --git a/tools/binman/test/054_unit_address.dts b/tools/binman/test/pack/unit_address.dts\nsimilarity index 100%\nrename from tools/binman/test/054_unit_address.dts\nrename to tools/binman/test/pack/unit_address.dts\ndiff --git a/tools/binman/test/079_uses_pos.dts b/tools/binman/test/pack/uses_pos.dts\nsimilarity index 100%\nrename from tools/binman/test/079_uses_pos.dts\nrename to tools/binman/test/pack/uses_pos.dts\n",
    "prefixes": [
        "v2",
        "02/23"
    ]
}