get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2206458,
    "url": "http://patchwork.ozlabs.org/api/patches/2206458/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/uboot/patch/20260306181304.2426352-17-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-17-sjg@chromium.org>",
    "list_archive_url": null,
    "date": "2026-03-06T18:12:44",
    "name": "[v2,16/23] binman: test: Move remaining test files to test/entry/",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "c6319de0cbbfce0a55f0c001bb59250c03d760a4",
    "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-17-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/2206458/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2206458/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=Cono9N8b;\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=\"Cono9N8b\";\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 4fSF350RQmz1xw1\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 07 Mar 2026 05:16:17 +1100 (AEDT)",
            "from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id AD70B84006;\n\tFri,  6 Mar 2026 19:14:15 +0100 (CET)",
            "by phobos.denx.de (Postfix, from userid 109)\n id 2853A8404A; Fri,  6 Mar 2026 19:14:14 +0100 (CET)",
            "from mail-qk1-x72e.google.com (mail-qk1-x72e.google.com\n [IPv6:2607:f8b0:4864:20::72e])\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 BEC0683F2D\n for <u-boot@lists.denx.de>; Fri,  6 Mar 2026 19:14:09 +0100 (CET)",
            "by mail-qk1-x72e.google.com with SMTP id\n af79cd13be357-8cb40277a8bso989196885a.1\n for <u-boot@lists.denx.de>; Fri, 06 Mar 2026 10:14:09 -0800 (PST)",
            "from chromium.org ([73.34.74.121]) by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8cd6f5736c0sm155930885a.49.2026.03.06.10.14.05\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 06 Mar 2026 10:14:06 -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=1772820848; x=1773425648; 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=PN45c5pRu++4XJV1CuyADCLwd1DKm5MAaoI0WSb0Ww4=;\n b=Cono9N8bojo6Ssu4XEvtYt5CHvJ5KSPfiNbAgaA3/sypEZUmfmohJQqY/32XlaiVtC\n FSnMh54shtVY4Wh/Srbc5HxjskATTLQcXDAARyTR73twq4Hlb+AbNgdIQSLDvEEIBy5E\n qsqjiPIeviWHNZg7y6Bq7wndvVIwVDKwi8uHo=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1772820848; x=1773425648;\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=PN45c5pRu++4XJV1CuyADCLwd1DKm5MAaoI0WSb0Ww4=;\n b=pztz6GMjbT4VBvjIMqjfhwv4n1E7oX6EnLItpDD0beMfF4xNRcux6bbcdzNWJVox9e\n bY2wOmXTADXceiw43l/MlxM6xZ7ntJRMVaYHdJI37zgcULHDp//YoFvcSMtgYES4d5re\n 353cpezj5r3vDmHbJBtHDDqrUIekG1QFeWyrxHViDbpSw6iqWUbC6xwERMns9FSx6DfA\n hbeSv63j1zzxoqWpwjc1KK1SxJRnvVDkeqWStDcuhhHW7EXwNr+yupbHkBzk9wDODTJj\n nZyYKFY2avIC+4xVS+a9BxvHEb9MXO8lqx1QqZRieQuTVPA+/4Bkz2wkpcC2K7/bOmiB\n Tc2A==",
        "X-Gm-Message-State": "AOJu0Yyq+I0pWvT37NHCMsxZhvmuST32+3ekEzVnRSqM2LQV6o8x9x79\n pvQ/Tf3AM90F/BIds3X32TnNGF84rs4UJUSVZNaEKoL5QAHEzImApu6AWWBNmxVIuJoyNT8uKFK\n 4gng=",
        "X-Gm-Gg": "ATEYQzwFmIRmZFpO6WQ88tt57xqQhBz8vKZdYdmvJC/CY96A4KEBK6N6h+rdHCq6XYY\n mSSci7T5eXl6F9UuR4ULQ8vKhDDFVXdrpQb6a69bIFqtNUjxbYhNyP/9RLOpcihUk/jwU7csmaD\n 6J/jvzadnb0SE/F4J6K0bSWevSoPktoqh1gtuVVZzljC2lTK0XFaIRiqvOjXJ17a55mkY4ZhDGJ\n q2QRCAI/4yu7MexkCyd1AqhbHtG5fHUnOorJcSsgYZCqbEvn0fOelCwmXQkW8VDyDn70sktzwoq\n V7UjaBSc6z92elow4XgU22sXbH36L49Xx63Rc/BD5SrGFVYb1yst67FOKUp3v87O8quWsCGal+G\n iPXgrL+46eTL+uYG7YtS3i5NXwluCdDtMMpOMnnJ84Lx94SHzOEjIoojR7kJ6Ka+4WzFI/1LuyG\n VL2c9wOOVdD78ir/l70g==",
        "X-Received": "by 2002:a05:620a:372a:b0:8c6:e8f6:2c7 with SMTP id\n af79cd13be357-8cd6d437e8bmr388308485a.38.1772820847755;\n Fri, 06 Mar 2026 10:14:07 -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 Jiaxun Yang <jiaxun.yang@flygoat.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 16/23] binman: test: Move remaining test files to\n test/entry/",
        "Date": "Fri,  6 Mar 2026 11:12:44 -0700",
        "Message-ID": "<20260306181304.2426352-17-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 the remaining 60 or so test files into an entry/ subdirectory.\nThese cover general entry types and features: entry args, fill, text,\nenv, compress, replace, template, collection, ELF, overlap, listing,\nsections, symlink, TEE OS, and other miscellaneous entries. Drop the\nnumeric prefixes and update all references.\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/fdt_test.py                      |   2 +-\n tools/binman/ftest.py                         | 160 +++++++++---------\n .../test/{262_absent.dts => entry/absent.dts} |   0\n .../collection.dts}                           |   0\n .../collection_other.dts}                     |   0\n .../collection_section.dts}                   |   0\n .../{083_compress.dts => entry/compress.dts}  |   0\n .../compress_extra.dts}                       |   0\n .../compress_image.dts}                       |   0\n .../compress_image_less.dts}                  |   0\n .../compress_section.dts}                     |   0\n .../compress_section_size.dts}                |   0\n .../test/{096_elf.dts => entry/elf.dts}       |   0\n .../elf_strip.dts}                            |   0\n .../entry_args.dts}                           |   0\n .../entry_args_missing.dts}                   |   0\n .../entry_args_required.dts}                  |   0\n .../entry_args_unknown_datatype.dts}          |   0\n .../test/{174_env.dts => entry/env.dts}       |   0\n .../env_no_size.dts}                          |   0\n .../env_too_small.dts}                        |   0\n .../test/{084_files.dts => entry/files.dts}   |   0\n .../files_align.dts}                          |   0\n .../files_compress.dts}                       |   0\n .../files_no_pattern.dts}                     |   0\n .../files_none.dts}                           |   0\n .../test/{069_fill.dts => entry/fill.dts}     |   0\n .../fill_empty.dts}                           |   0\n .../fill_no_size.dts}                         |   0\n .../image_entryarg.dts}                       |   0\n .../test/{127_list.dts => entry/list.dts}     |   0\n .../name_prefix.dts}                          |   0\n .../test/{268_null.dts => entry/null.dts}     |   0\n .../offset_from_elf.dts}                      |   0\n .../{269_overlap.dts => entry/overlap.dts}    |   0\n .../overlap_bad.dts}                          |   0\n .../overlap_no_size.dts}                      |   0\n .../overlap_null.dts}                         |   0\n .../prop_test.dts}                            |   0\n .../read_image_skip.dts}                      |   0\n .../remove_template.dts}                      |   0\n .../{132_replace.dts => entry/replace.dts}    |   0\n .../replace_all.dts}                          |   0\n .../replace_multi.dts}                        |   0\n .../replace_repack.dts}                       |   0\n .../replace_section_deep.dts}                 |   0\n .../replace_section_simple.dts}               |   0\n .../replace_with_bintool.dts}                 |   0\n .../section_fname.dts}                        |   0\n .../section_timeout.dts}                      |   0\n .../{055_sections.dts => entry/sections.dts}  |   0\n .../{259_symlink.dts => entry/symlink.dts}    |   0\n .../test/{222_tee_os.dts => entry/tee_os.dts} |   0\n .../tee_os_opt.dts}                           |   0\n .../{286_template.dts => entry/template.dts}  |   0\n .../template_multi.dts}                       |   0\n .../template_phandle.dts}                     |   0\n .../template_phandle_dup.dts}                 |   0\n .../template_section.dts}                     |   0\n .../test/{066_text.dts => entry/text.dts}     |   0\n .../unique_names.dts}                         |   0\n .../unique_names_multi.dts}                   |   0\n .../unknown_contents.dts}                     |   0\n .../unknown_pos_size.dts}                     |   0\n 65 files changed, 82 insertions(+), 82 deletions(-)\n rename tools/binman/test/{262_absent.dts => entry/absent.dts} (100%)\n rename tools/binman/test/{198_collection.dts => entry/collection.dts} (100%)\n rename tools/binman/test/{246_collection_other.dts => entry/collection_other.dts} (100%)\n rename tools/binman/test/{199_collection_section.dts => entry/collection_section.dts} (100%)\n rename tools/binman/test/{083_compress.dts => entry/compress.dts} (100%)\n rename tools/binman/test/{186_compress_extra.dts => entry/compress_extra.dts} (100%)\n rename tools/binman/test/{182_compress_image.dts => entry/compress_image.dts} (100%)\n rename tools/binman/test/{183_compress_image_less.dts => entry/compress_image_less.dts} (100%)\n rename tools/binman/test/{185_compress_section.dts => entry/compress_section.dts} (100%)\n rename tools/binman/test/{184_compress_section_size.dts => entry/compress_section_size.dts} (100%)\n rename tools/binman/test/{096_elf.dts => entry/elf.dts} (100%)\n rename tools/binman/test/{097_elf_strip.dts => entry/elf_strip.dts} (100%)\n rename tools/binman/test/{062_entry_args.dts => entry/entry_args.dts} (100%)\n rename tools/binman/test/{063_entry_args_missing.dts => entry/entry_args_missing.dts} (100%)\n rename tools/binman/test/{064_entry_args_required.dts => entry/entry_args_required.dts} (100%)\n rename tools/binman/test/{065_entry_args_unknown_datatype.dts => entry/entry_args_unknown_datatype.dts} (100%)\n rename tools/binman/test/{174_env.dts => entry/env.dts} (100%)\n rename tools/binman/test/{175_env_no_size.dts => entry/env_no_size.dts} (100%)\n rename tools/binman/test/{176_env_too_small.dts => entry/env_too_small.dts} (100%)\n rename tools/binman/test/{084_files.dts => entry/files.dts} (100%)\n rename tools/binman/test/{190_files_align.dts => entry/files_align.dts} (100%)\n rename tools/binman/test/{085_files_compress.dts => entry/files_compress.dts} (100%)\n rename tools/binman/test/{087_files_no_pattern.dts => entry/files_no_pattern.dts} (100%)\n rename tools/binman/test/{086_files_none.dts => entry/files_none.dts} (100%)\n rename tools/binman/test/{069_fill.dts => entry/fill.dts} (100%)\n rename tools/binman/test/{080_fill_empty.dts => entry/fill_empty.dts} (100%)\n rename tools/binman/test/{070_fill_no_size.dts => entry/fill_no_size.dts} (100%)\n rename tools/binman/test/{188_image_entryarg.dts => entry/image_entryarg.dts} (100%)\n rename tools/binman/test/{127_list.dts => entry/list.dts} (100%)\n rename tools/binman/test/{056_name_prefix.dts => entry/name_prefix.dts} (100%)\n rename tools/binman/test/{268_null.dts => entry/null.dts} (100%)\n rename tools/binman/test/{274_offset_from_elf.dts => entry/offset_from_elf.dts} (100%)\n rename tools/binman/test/{269_overlap.dts => entry/overlap.dts} (100%)\n rename tools/binman/test/{271_overlap_bad.dts => entry/overlap_bad.dts} (100%)\n rename tools/binman/test/{272_overlap_no_size.dts => entry/overlap_no_size.dts} (100%)\n rename tools/binman/test/{270_overlap_null.dts => entry/overlap_null.dts} (100%)\n rename tools/binman/test/{045_prop_test.dts => entry/prop_test.dts} (100%)\n rename tools/binman/test/{191_read_image_skip.dts => entry/read_image_skip.dts} (100%)\n rename tools/binman/test/{346_remove_template.dts => entry/remove_template.dts} (100%)\n rename tools/binman/test/{132_replace.dts => entry/replace.dts} (100%)\n rename tools/binman/test/{143_replace_all.dts => entry/replace_all.dts} (100%)\n rename tools/binman/test/{133_replace_multi.dts => entry/replace_multi.dts} (100%)\n rename tools/binman/test/{139_replace_repack.dts => entry/replace_repack.dts} (100%)\n rename tools/binman/test/{278_replace_section_deep.dts => entry/replace_section_deep.dts} (100%)\n rename tools/binman/test/{241_replace_section_simple.dts => entry/replace_section_simple.dts} (100%)\n rename tools/binman/test/{239_replace_with_bintool.dts => entry/replace_with_bintool.dts} (100%)\n rename tools/binman/test/{261_section_fname.dts => entry/section_fname.dts} (100%)\n rename tools/binman/test/{202_section_timeout.dts => entry/section_timeout.dts} (100%)\n rename tools/binman/test/{055_sections.dts => entry/sections.dts} (100%)\n rename tools/binman/test/{259_symlink.dts => entry/symlink.dts} (100%)\n rename tools/binman/test/{222_tee_os.dts => entry/tee_os.dts} (100%)\n rename tools/binman/test/{263_tee_os_opt.dts => entry/tee_os_opt.dts} (100%)\n rename tools/binman/test/{286_template.dts => entry/template.dts} (100%)\n rename tools/binman/test/{287_template_multi.dts => entry/template_multi.dts} (100%)\n rename tools/binman/test/{309_template_phandle.dts => entry/template_phandle.dts} (100%)\n rename tools/binman/test/{310_template_phandle_dup.dts => entry/template_phandle_dup.dts} (100%)\n rename tools/binman/test/{289_template_section.dts => entry/template_section.dts} (100%)\n rename tools/binman/test/{066_text.dts => entry/text.dts} (100%)\n rename tools/binman/test/{237_unique_names.dts => entry/unique_names.dts} (100%)\n rename tools/binman/test/{238_unique_names_multi.dts => entry/unique_names_multi.dts} (100%)\n rename tools/binman/test/{057_unknown_contents.dts => entry/unknown_contents.dts} (100%)\n rename tools/binman/test/{041_unknown_pos_size.dts => entry/unknown_pos_size.dts} (100%)",
    "diff": "diff --git a/doc/develop/binman_tests.rst b/doc/develop/binman_tests.rst\nindex 3be7d43cd3f..74a2d0e8ef2 100644\n--- a/doc/develop/binman_tests.rst\n+++ b/doc/develop/binman_tests.rst\n@@ -402,7 +402,7 @@ Another type of test is one which checks error-handling, for example:\n     def testFillNoSize(self):\n         \"\"\"Test for an fill entry type with no size\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFile('070_fill_no_size.dts')\n+            self._DoReadFile('entry/fill_no_size.dts')\n         self.assertIn(\"'fill' entry is missing properties: size\",\n                       str(e.exception))\n \ndiff --git a/tools/binman/fdt_test.py b/tools/binman/fdt_test.py\nindex ef659c0f276..ef81a3262d2 100644\n--- a/tools/binman/fdt_test.py\n+++ b/tools/binman/fdt_test.py\n@@ -41,7 +41,7 @@ class TestFdt(unittest.TestCase):\n         self._DeleteProp(dt)\n \n     def testFdtNormalProp(self):\n-        fname = self.GetCompiled('045_prop_test.dts')\n+        fname = self.GetCompiled('entry/prop_test.dts')\n         dt = FdtScan(fname)\n         node = dt.GetNode('/binman/intel-me')\n         self.assertEqual('intel-me', node.name)\ndiff --git a/tools/binman/ftest.py b/tools/binman/ftest.py\nindex 0e4f349aae9..3f57ef05ead 100644\n--- a/tools/binman/ftest.py\n+++ b/tools/binman/ftest.py\n@@ -1431,7 +1431,7 @@ class TestFunctional(unittest.TestCase):\n     def testUnknownPosSize(self):\n         \"\"\"Test that microcode must be placed within the image\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFile('041_unknown_pos_size.dts', True)\n+            self._DoReadFile('entry/unknown_pos_size.dts', True)\n         self.assertIn(\"Section '/binman': Unable to set offset/size for unknown \"\n                 \"entry 'invalid-entry'\", str(e.exception))\n \n@@ -1626,7 +1626,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testSections(self):\n         \"\"\"Basic test of sections\"\"\"\n-        data = self._DoReadFile('055_sections.dts')\n+        data = self._DoReadFile('entry/sections.dts')\n         expected = (U_BOOT_DATA + tools.get_bytes(ord('!'), 12) +\n                     U_BOOT_DATA + tools.get_bytes(ord('a'), 12) +\n                     U_BOOT_DATA + tools.get_bytes(ord('&'), 4))\n@@ -1634,7 +1634,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testMap(self):\n         \"\"\"Tests outputting a map of the images\"\"\"\n-        _, _, map_data, _ = self._DoReadFileDtb('055_sections.dts', map=True)\n+        _, _, map_data, _ = self._DoReadFileDtb('entry/sections.dts', map=True)\n         self.assertEqual('''ImagePos    Offset      Size  Name\n 00000000  00000000  00000028  image\n 00000000   00000000  00000010  section@0\n@@ -1647,7 +1647,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testNamePrefix(self):\n         \"\"\"Tests that name prefixes are used\"\"\"\n-        _, _, map_data, _ = self._DoReadFileDtb('056_name_prefix.dts', map=True)\n+        _, _, map_data, _ = self._DoReadFileDtb('entry/name_prefix.dts', map=True)\n         self.assertEqual('''ImagePos    Offset      Size  Name\n 00000000  00000000  00000028  image\n 00000000   00000000  00000010  section@0\n@@ -1659,7 +1659,7 @@ class TestFunctional(unittest.TestCase):\n     def testUnknownContents(self):\n         \"\"\"Test that obtaining the contents works as expected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFile('057_unknown_contents.dts', True)\n+            self._DoReadFile('entry/unknown_contents.dts', True)\n         self.assertIn(\"Image '/binman': Internal error: Could not complete \"\n                 \"processing of contents: remaining [\"\n                 \"<binman.etype._testing.Entry__testing \", str(e.exception))\n@@ -1718,7 +1718,7 @@ class TestFunctional(unittest.TestCase):\n             'test-str-arg': 'test1',\n             'test-int-arg': '456',\n         }\n-        self._DoReadFileDtb('062_entry_args.dts', entry_args=entry_args)\n+        self._DoReadFileDtb('entry/entry_args.dts', entry_args=entry_args)\n         self.assertIn('image', control.images)\n         entry = control.images['image'].GetEntries()['_testing']\n         self.assertEqual('test0', entry.test_str_fdt)\n@@ -1731,7 +1731,7 @@ class TestFunctional(unittest.TestCase):\n         entry_args = {\n             'test-int-arg': '456',\n         }\n-        self._DoReadFileDtb('063_entry_args_missing.dts', entry_args=entry_args)\n+        self._DoReadFileDtb('entry/entry_args_missing.dts', entry_args=entry_args)\n         entry = control.images['image'].GetEntries()['_testing']\n         self.assertEqual('test0', entry.test_str_fdt)\n         self.assertEqual(None, entry.test_str_arg)\n@@ -1744,7 +1744,7 @@ class TestFunctional(unittest.TestCase):\n             'test-int-arg': '456',\n         }\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFileDtb('064_entry_args_required.dts')\n+            self._DoReadFileDtb('entry/entry_args_required.dts')\n         self.assertIn(\"Node '/binman/_testing': \"\n             'Missing required properties/entry args: test-str-arg, '\n             'test-int-fdt, test-int-arg',\n@@ -1752,7 +1752,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testEntryArgsInvalidFormat(self):\n         \"\"\"Test that an invalid entry-argument format is detected\"\"\"\n-        args = ['build', '-d', self.TestFile('064_entry_args_required.dts'),\n+        args = ['build', '-d', self.TestFile('entry/entry_args_required.dts'),\n                 '-ano-value']\n         with self.assertRaises(ValueError) as e:\n             self._DoBinman(*args)\n@@ -1764,7 +1764,7 @@ class TestFunctional(unittest.TestCase):\n             'test-int-arg': 'abc',\n         }\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFileDtb('062_entry_args.dts', entry_args=entry_args)\n+            self._DoReadFileDtb('entry/entry_args.dts', entry_args=entry_args)\n         self.assertIn(\"Node '/binman/_testing': Cannot convert entry arg \"\n                       \"'test-int-arg' (value 'abc') to integer\",\n             str(e.exception))\n@@ -1780,7 +1780,7 @@ class TestFunctional(unittest.TestCase):\n             'test-bad-datatype-arg': '12',\n         }\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFileDtb('065_entry_args_unknown_datatype.dts',\n+            self._DoReadFileDtb('entry/entry_args_unknown_datatype.dts',\n                                 entry_args=entry_args)\n         self.assertIn('GetArg() internal error: Unknown data type ',\n                       str(e.exception))\n@@ -1792,7 +1792,7 @@ class TestFunctional(unittest.TestCase):\n             'test-id2': TEXT_DATA2,\n             'test-id3': TEXT_DATA3,\n         }\n-        data, _, _, _ = self._DoReadFileDtb('066_text.dts',\n+        data, _, _, _ = self._DoReadFileDtb('entry/text.dts',\n                                             entry_args=entry_args)\n         expected = (tools.to_bytes(TEXT_DATA) +\n                     tools.get_bytes(0, 8 - len(TEXT_DATA)) +\n@@ -1870,14 +1870,14 @@ class TestFunctional(unittest.TestCase):\n \n     def testFill(self):\n         \"\"\"Test for an fill entry type\"\"\"\n-        data = self._DoReadFile('069_fill.dts')\n+        data = self._DoReadFile('entry/fill.dts')\n         expected = tools.get_bytes(0xff, 8) + tools.get_bytes(0, 8)\n         self.assertEqual(expected, data)\n \n     def testFillNoSize(self):\n         \"\"\"Test for an fill entry type with no size\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFile('070_fill_no_size.dts')\n+            self._DoReadFile('entry/fill_no_size.dts')\n         self.assertIn(\"'fill' entry is missing properties: size\",\n                       str(e.exception))\n \n@@ -2043,13 +2043,13 @@ class TestFunctional(unittest.TestCase):\n \n     def testFillZero(self):\n         \"\"\"Test for an fill entry type with a size of 0\"\"\"\n-        data = self._DoReadFile('080_fill_empty.dts')\n+        data = self._DoReadFile('entry/fill_empty.dts')\n         self.assertEqual(tools.get_bytes(0, 16), data)\n \n     def testTextMissing(self):\n         \"\"\"Test for a text entry type where there is no text\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFileDtb('066_text.dts',)\n+            self._DoReadFileDtb('entry/text.dts',)\n         self.assertIn(\"Node '/binman/text': No value provided for text label \"\n                       \"'test-id'\", str(e.exception))\n \n@@ -2162,7 +2162,7 @@ class TestFunctional(unittest.TestCase):\n     def testCompress(self):\n         \"\"\"Test compression of blobs\"\"\"\n         self._CheckLz4()\n-        data, _, _, out_dtb_fname = self._DoReadFileDtb('083_compress.dts',\n+        data, _, _, out_dtb_fname = self._DoReadFileDtb('entry/compress.dts',\n                                             use_real_dtb=True, update_dtb=True)\n         dtb = fdt.Fdt(out_dtb_fname)\n         dtb.Scan()\n@@ -2192,13 +2192,13 @@ class TestFunctional(unittest.TestCase):\n \n     def testFiles(self):\n         \"\"\"Test bringing in multiple files\"\"\"\n-        data = self._DoReadFile('084_files.dts')\n+        data = self._DoReadFile('entry/files.dts')\n         self.assertEqual(FILES_DATA, data)\n \n     def testFilesCompress(self):\n         \"\"\"Test bringing in multiple files and compressing them\"\"\"\n         self._CheckLz4()\n-        data = self._DoReadFile('085_files_compress.dts')\n+        data = self._DoReadFile('entry/files_compress.dts')\n \n         image = control.images['image']\n         entries = image.GetEntries()\n@@ -2218,14 +2218,14 @@ class TestFunctional(unittest.TestCase):\n     def testFilesMissing(self):\n         \"\"\"Test missing files\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            data = self._DoReadFile('086_files_none.dts')\n+            data = self._DoReadFile('entry/files_none.dts')\n         self.assertIn(\"Node '/binman/files': Pattern \\'files/*.none\\' matched \"\n                       'no files', str(e.exception))\n \n     def testFilesNoPattern(self):\n         \"\"\"Test missing files\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            data = self._DoReadFile('087_files_no_pattern.dts')\n+            data = self._DoReadFile('entry/files_no_pattern.dts')\n         self.assertIn(\"Node '/binman/files': Missing 'pattern' property\",\n                       str(e.exception))\n \n@@ -2371,14 +2371,14 @@ class TestFunctional(unittest.TestCase):\n         self._SetupTplElf()\n         with open(self.ElfTestFile('bss_data'), 'rb') as fd:\n             TestFunctional._MakeInputFile('-boot', fd.read())\n-        data = self._DoReadFile('096_elf.dts')\n+        data = self._DoReadFile('entry/elf.dts')\n \n     def testElfStrip(self):\n         \"\"\"Basic test of ELF entries\"\"\"\n         self._SetupSplElf()\n         with open(self.ElfTestFile('bss_data'), 'rb') as fd:\n             TestFunctional._MakeInputFile('-boot', fd.read())\n-        data = self._DoReadFile('097_elf_strip.dts')\n+        data = self._DoReadFile('entry/elf_strip.dts')\n \n     def testPackOverlapMap(self):\n         \"\"\"Test that overlapping regions are detected\"\"\"\n@@ -2761,7 +2761,7 @@ class TestFunctional(unittest.TestCase):\n     def testList(self):\n         \"\"\"Test listing the files in an image\"\"\"\n         self._CheckLz4()\n-        data = self._DoReadFile('127_list.dts')\n+        data = self._DoReadFile('entry/list.dts')\n         image = control.images['image']\n         entries = image.BuildEntryList()\n         self.assertEqual(7, len(entries))\n@@ -3300,7 +3300,7 @@ class TestFunctional(unittest.TestCase):\n         self.assertEqual(len(U_BOOT_DATA), entry.size)\n \n     def _RunReplaceCmd(self, entry_name, data, decomp=True, allow_resize=True,\n-                       dts='132_replace.dts'):\n+                       dts='entry/replace.dts'):\n         \"\"\"Replace an entry in an image\n \n         This writes the entry data to update it, then opens the updated file and\n@@ -3377,13 +3377,13 @@ class TestFunctional(unittest.TestCase):\n         expected = U_BOOT_DATA + b'x'\n         with self.assertRaises(ValueError) as e:\n             self._RunReplaceCmd('u-boot', expected, allow_resize=False,\n-                                dts='139_replace_repack.dts')\n+                                dts='entry/replace_repack.dts')\n         self.assertIn(\"Node '/u-boot': Entry data size does not match, but resize is disabled\",\n                       str(e.exception))\n \n     def testReplaceMulti(self):\n         \"\"\"Test replacing entry data where multiple images are generated\"\"\"\n-        data = self._DoReadFileDtb('133_replace_multi.dts', use_real_dtb=True,\n+        data = self._DoReadFileDtb('entry/replace_multi.dts', use_real_dtb=True,\n                                    update_dtb=True)[0]\n         expected = b'x' * len(U_BOOT_DATA)\n         updated_fname = tools.get_output_filename('image-updated.bin')\n@@ -3502,7 +3502,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test replacing a single file in an entry with a larger file\"\"\"\n         expected = U_BOOT_DATA + b'x'\n         data, _, image = self._RunReplaceCmd('u-boot', expected,\n-                                             dts='139_replace_repack.dts')\n+                                             dts='entry/replace_repack.dts')\n         self.assertEqual(expected, data)\n \n         entries = image.GetEntries()\n@@ -3599,7 +3599,7 @@ class TestFunctional(unittest.TestCase):\n                 Output directory\n                 Expected values for updated entries, each a string\n         \"\"\"\n-        data = self._DoReadFileRealDtb('143_replace_all.dts')\n+        data = self._DoReadFileRealDtb('entry/replace_all.dts')\n \n         updated_fname = tools.get_output_filename('image-updated.bin')\n         tools.write_file(updated_fname, data)\n@@ -3686,7 +3686,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testReplaceCmd(self):\n         \"\"\"Test replacing a file fron an image on the command line\"\"\"\n-        self._DoReadFileRealDtb('143_replace_all.dts')\n+        self._DoReadFileRealDtb('entry/replace_all.dts')\n \n         try:\n             tmpdir, updated_fname = self._SetupImageInTmpdir()\n@@ -3742,7 +3742,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testReplaceCmdMap(self):\n         \"\"\"Test replacing a file fron an image on the command line\"\"\"\n-        self._DoReadFileRealDtb('143_replace_all.dts')\n+        self._DoReadFileRealDtb('entry/replace_all.dts')\n \n         try:\n             tmpdir, updated_fname = self._SetupImageInTmpdir()\n@@ -3760,7 +3760,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testReplaceNoEntryPaths(self):\n         \"\"\"Test replacing an entry without an entry path\"\"\"\n-        self._DoReadFileRealDtb('143_replace_all.dts')\n+        self._DoReadFileRealDtb('entry/replace_all.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         with self.assertRaises(ValueError) as e:\n             control.ReplaceEntries(image_fname, 'fname', None, [])\n@@ -3769,7 +3769,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testReplaceTooManyEntryPaths(self):\n         \"\"\"Test extracting some entries\"\"\"\n-        self._DoReadFileRealDtb('143_replace_all.dts')\n+        self._DoReadFileRealDtb('entry/replace_all.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         with self.assertRaises(ValueError) as e:\n             control.ReplaceEntries(image_fname, 'fname', None, ['a', 'b'])\n@@ -4421,7 +4421,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testEnvironment(self):\n         \"\"\"Test adding a U-Boot environment\"\"\"\n-        data = self._DoReadFile('174_env.dts')\n+        data = self._DoReadFile('entry/env.dts')\n         self.assertEqual(U_BOOT_DATA, data[:len(U_BOOT_DATA)])\n         self.assertEqual(U_BOOT_NODTB_DATA, data[-len(U_BOOT_NODTB_DATA):])\n         env = data[len(U_BOOT_DATA):-len(U_BOOT_NODTB_DATA)]\n@@ -4431,14 +4431,14 @@ class TestFunctional(unittest.TestCase):\n     def testEnvironmentNoSize(self):\n         \"\"\"Test that a missing 'size' property is detected\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('175_env_no_size.dts')\n+            self._DoTestFile('entry/env_no_size.dts')\n         self.assertIn(\"'u-boot-env' entry must have a size property\",\n                       str(e.exception))\n \n     def testEnvironmentTooSmall(self):\n         \"\"\"Test handling of an environment that does not fit\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('176_env_too_small.dts')\n+            self._DoTestFile('entry/env_too_small.dts')\n \n         # checksum, start byte, environment with \\0 terminator, final \\0\n         need = 4 + 1 + len(ENV_DATA) + 1 + 1\n@@ -4530,7 +4530,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test compression of the entire image\"\"\"\n         self._CheckLz4()\n         data, _, _, out_dtb_fname = self._DoReadFileDtb(\n-            '182_compress_image.dts', use_real_dtb=True, update_dtb=True)\n+            'entry/compress_image.dts', use_real_dtb=True, update_dtb=True)\n         dtb = fdt.Fdt(out_dtb_fname)\n         dtb.Scan()\n         props = self._GetPropTree(dtb, ['offset', 'image-pos', 'size',\n@@ -4573,7 +4573,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test compression where compression reduces the image size\"\"\"\n         self._CheckLz4()\n         data, _, _, out_dtb_fname = self._DoReadFileDtb(\n-            '183_compress_image_less.dts', use_real_dtb=True, update_dtb=True)\n+            'entry/compress_image_less.dts', use_real_dtb=True, update_dtb=True)\n         dtb = fdt.Fdt(out_dtb_fname)\n         dtb.Scan()\n         props = self._GetPropTree(dtb, ['offset', 'image-pos', 'size',\n@@ -4618,7 +4618,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test compression of a section with a fixed size\"\"\"\n         self._CheckLz4()\n         data, _, _, out_dtb_fname = self._DoReadFileDtb(\n-            '184_compress_section_size.dts', use_real_dtb=True, update_dtb=True)\n+            'entry/compress_section_size.dts', use_real_dtb=True, update_dtb=True)\n         dtb = fdt.Fdt(out_dtb_fname)\n         dtb.Scan()\n         props = self._GetPropTree(dtb, ['offset', 'image-pos', 'size',\n@@ -4646,7 +4646,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test compression of a section with no fixed size\"\"\"\n         self._CheckLz4()\n         data, _, _, out_dtb_fname = self._DoReadFileDtb(\n-            '185_compress_section.dts', use_real_dtb=True, update_dtb=True)\n+            'entry/compress_section.dts', use_real_dtb=True, update_dtb=True)\n         dtb = fdt.Fdt(out_dtb_fname)\n         dtb.Scan()\n         props = self._GetPropTree(dtb, ['offset', 'image-pos', 'size',\n@@ -4671,7 +4671,7 @@ class TestFunctional(unittest.TestCase):\n     def testLz4Missing(self):\n         \"\"\"Test that binman still produces an image if lz4 is missing\"\"\"\n         with terminal.capture() as (_, stderr):\n-            self._DoTestFile('185_compress_section.dts',\n+            self._DoTestFile('entry/compress_section.dts',\n                              force_missing_bintools='lz4')\n         err = stderr.getvalue()\n         self.assertRegex(err, \"Image 'image'.*missing bintools.*: lz4\")\n@@ -4680,7 +4680,7 @@ class TestFunctional(unittest.TestCase):\n         \"\"\"Test compression of a section with no fixed size\"\"\"\n         self._CheckLz4()\n         data, _, _, out_dtb_fname = self._DoReadFileDtb(\n-            '186_compress_extra.dts', use_real_dtb=True, update_dtb=True)\n+            'entry/compress_extra.dts', use_real_dtb=True, update_dtb=True)\n         dtb = fdt.Fdt(out_dtb_fname)\n         dtb.Scan()\n         props = self._GetPropTree(dtb, ['offset', 'image-pos', 'size',\n@@ -4764,7 +4764,7 @@ class TestFunctional(unittest.TestCase):\n             'cros-ec-rw-path': 'ecrw.bin',\n         }\n         data = self.data = self._DoReadFileDtb(\n-            '188_image_entryarg.dts',use_real_dtb=True, update_dtb=True,\n+            'entry/image_entryarg.dts',use_real_dtb=True, update_dtb=True,\n             entry_args=entry_args)\n \n         image_fname = tools.get_output_filename('image.bin')\n@@ -4779,7 +4779,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testFilesAlign(self):\n         \"\"\"Test alignment with files\"\"\"\n-        data = self._DoReadFile('190_files_align.dts')\n+        data = self._DoReadFile('entry/files_align.dts')\n \n         # The first string is 15 bytes so will align to 16\n         expect = FILES_DATA[:15] + b'\\0' + FILES_DATA[15:]\n@@ -4787,7 +4787,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testReadImageSkip(self):\n         \"\"\"Test reading an image and accessing its FDT map\"\"\"\n-        data = self.data = self._DoReadFileRealDtb('191_read_image_skip.dts')\n+        data = self.data = self._DoReadFileRealDtb('entry/read_image_skip.dts')\n         image_fname = tools.get_output_filename('image.bin')\n         orig_image = control.images['image']\n         image = Image.FromFile(image_fname)\n@@ -5013,7 +5013,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testCollection(self):\n         \"\"\"Test a collection\"\"\"\n-        data = self._DoReadFile('198_collection.dts')\n+        data = self._DoReadFile('entry/collection.dts')\n         self.assertEqual(U_BOOT_NODTB_DATA + U_BOOT_DTB_DATA +\n                          tools.get_bytes(0xff, 2) + U_BOOT_NODTB_DATA +\n                          tools.get_bytes(0xfe, 3) + U_BOOT_DTB_DATA,\n@@ -5025,7 +5025,7 @@ class TestFunctional(unittest.TestCase):\n         # BuildSectionData() is called with required=True, a section will force\n         # building the contents, producing an error is anything is still\n         # missing.\n-        data = self._DoReadFile('199_collection_section.dts')\n+        data = self._DoReadFile('entry/collection_section.dts')\n         section = U_BOOT_NODTB_DATA + U_BOOT_DTB_DATA\n         self.assertEqual(section + U_BOOT_DATA + tools.get_bytes(0xff, 2) +\n                          section + tools.get_bytes(0xfe, 3) + U_BOOT_DATA,\n@@ -5051,7 +5051,7 @@ class TestFunctional(unittest.TestCase):\n \n     def testSectionsSingleThread(self):\n         \"\"\"Test sections without multithreading\"\"\"\n-        data = self._DoReadFileDtb('055_sections.dts', threads=0)[0]\n+        data = self._DoReadFileDtb('entry/sections.dts', threads=0)[0]\n         expected = (U_BOOT_DATA + tools.get_bytes(ord('!'), 12) +\n                     U_BOOT_DATA + tools.get_bytes(ord('a'), 12) +\n                     U_BOOT_DATA + tools.get_bytes(ord('&'), 4))\n@@ -5060,13 +5060,13 @@ class TestFunctional(unittest.TestCase):\n     def testThreadTimeout(self):\n         \"\"\"Test handling a thread that takes too long\"\"\"\n         with self.assertRaises(ValueError) as e:\n-            self._DoTestFile('202_section_timeout.dts',\n+            self._DoTestFile('entry/section_timeout.dts',\n                              test_section_timeout=True)\n         self.assertIn(\"Timed out obtaining contents\", str(e.exception))\n \n     def testTiming(self):\n         \"\"\"Test output of timing information\"\"\"\n-        data = self._DoReadFile('055_sections.dts')\n+        data = self._DoReadFile('entry/sections.dts')\n         with terminal.capture() as (stdout, stderr):\n             state.TimingShow()\n         self.assertIn('read:', stdout.getvalue())\n@@ -5573,7 +5573,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testPackTeeOs(self):\n         \"\"\"Test that an image with an TEE binary can be created\"\"\"\n-        data = self._DoReadFile('222_tee_os.dts')\n+        data = self._DoReadFile('entry/tee_os.dts')\n         self.assertEqual(TEE_OS_DATA, data[:len(TEE_OS_DATA)])\n \n     def testPackTiDm(self):\n@@ -5907,7 +5907,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testSafeUniqueNames(self):\n         \"\"\"Test entry unique names are safe in single image configuration\"\"\"\n-        data = self._DoReadFileRealDtb('237_unique_names.dts')\n+        data = self._DoReadFileRealDtb('entry/unique_names.dts')\n \n         orig_image = control.images['image']\n         image_fname = tools.get_output_filename('image.bin')\n@@ -5917,7 +5917,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testSafeUniqueNamesMulti(self):\n         \"\"\"Test entry unique names are safe with multiple images\"\"\"\n-        data = self._DoReadFileRealDtb('238_unique_names_multi.dts')\n+        data = self._DoReadFileRealDtb('entry/unique_names_multi.dts')\n \n         orig_image = control.images['image']\n         image_fname = tools.get_output_filename('image.bin')\n@@ -5927,7 +5927,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testReplaceCmdWithBintool(self):\n         \"\"\"Test replacing an entry that needs a bintool to pack\"\"\"\n-        data = self._DoReadFileRealDtb('239_replace_with_bintool.dts')\n+        data = self._DoReadFileRealDtb('entry/replace_with_bintool.dts')\n         expected = U_BOOT_DATA + b'aa'\n         self.assertEqual(expected, data[:len(expected)])\n \n@@ -5946,7 +5946,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testReplaceCmdOtherWithBintool(self):\n         \"\"\"Test replacing an entry when another needs a bintool to pack\"\"\"\n-        data = self._DoReadFileRealDtb('239_replace_with_bintool.dts')\n+        data = self._DoReadFileRealDtb('entry/replace_with_bintool.dts')\n         expected = U_BOOT_DATA + b'aa'\n         self.assertEqual(expected, data[:len(expected)])\n \n@@ -6061,7 +6061,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n         \"\"\"Test replacing a simple section with same-sized data\"\"\"\n         new_data = b'w' * len(COMPRESS_DATA + U_BOOT_DATA)\n         data, expected_fdtmap, image = self._RunReplaceCmd('section',\n-            new_data, dts='241_replace_section_simple.dts')\n+            new_data, dts='entry/replace_section_simple.dts')\n         self.assertEqual(new_data, data)\n \n         entries = image.GetEntries()\n@@ -6073,7 +6073,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n         \"\"\"Test replacing a simple section with larger data\"\"\"\n         new_data = b'w' * (len(COMPRESS_DATA + U_BOOT_DATA) + 1)\n         data, expected_fdtmap, image = self._RunReplaceCmd('section',\n-            new_data, dts='241_replace_section_simple.dts')\n+            new_data, dts='entry/replace_section_simple.dts')\n         self.assertEqual(new_data, data)\n \n         entries = image.GetEntries()\n@@ -6087,7 +6087,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n         \"\"\"Test replacing a simple section with smaller data\"\"\"\n         new_data = b'w' * (len(COMPRESS_DATA + U_BOOT_DATA) - 1) + b'\\0'\n         data, expected_fdtmap, image = self._RunReplaceCmd('section',\n-            new_data, dts='241_replace_section_simple.dts')\n+            new_data, dts='entry/replace_section_simple.dts')\n         self.assertEqual(new_data, data)\n \n         # The new size is the same as the old, just with a pad byte at the end\n@@ -6103,7 +6103,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n             state.SetAllowEntryContraction(True)\n             with self.assertRaises(ValueError) as exc:\n                 self._RunReplaceCmd('section', new_data,\n-                                    dts='241_replace_section_simple.dts')\n+                                    dts='entry/replace_section_simple.dts')\n         finally:\n             state.SetAllowEntryContraction(False)\n \n@@ -6172,7 +6172,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testCollectionOther(self):\n         \"\"\"Test a collection where the data comes from another section\"\"\"\n-        data = self._DoReadFile('246_collection_other.dts')\n+        data = self._DoReadFile('entry/collection_other.dts')\n         self.assertEqual(U_BOOT_NODTB_DATA + U_BOOT_DTB_DATA +\n                          tools.get_bytes(0xff, 2) + U_BOOT_NODTB_DATA +\n                          tools.get_bytes(0xfe, 3) + U_BOOT_DTB_DATA,\n@@ -6380,7 +6380,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testSymlink(self):\n         \"\"\"Test that image files can be symlinked\"\"\"\n-        retcode = self._DoTestFile('259_symlink.dts', debug=True, map=True)\n+        retcode = self._DoTestFile('entry/symlink.dts', debug=True, map=True)\n         self.assertEqual(0, retcode)\n         image = control.images['test_image']\n         fname = tools.get_output_filename('test_image.bin')\n@@ -6391,9 +6391,9 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testSymlinkOverwrite(self):\n         \"\"\"Test that symlinked images can be overwritten\"\"\"\n         testdir = TestFunctional._MakeInputDir('symlinktest')\n-        self._DoTestFile('259_symlink.dts', debug=True, map=True, output_dir=testdir)\n+        self._DoTestFile('entry/symlink.dts', debug=True, map=True, output_dir=testdir)\n         # build the same image again in the same directory so that existing symlink is present\n-        self._DoTestFile('259_symlink.dts', debug=True, map=True, output_dir=testdir)\n+        self._DoTestFile('entry/symlink.dts', debug=True, map=True, output_dir=testdir)\n         fname = tools.get_output_filename('test_image.bin')\n         sname = tools.get_output_filename('symlink_to_test.bin')\n         self.assertTrue(os.path.islink(sname))\n@@ -6459,7 +6459,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testSectionFilename(self):\n         \"\"\"Check writing of section contents to a file\"\"\"\n-        data = self._DoReadFile('261_section_fname.dts')\n+        data = self._DoReadFile('entry/section_fname.dts')\n         expected = (b'&&' + U_BOOT_DATA + b'&&&' +\n                     tools.get_bytes(ord('!'), 7) +\n                     U_BOOT_DATA + tools.get_bytes(ord('&'), 12))\n@@ -6472,7 +6472,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testAbsent(self):\n         \"\"\"Check handling of absent entries\"\"\"\n-        data = self._DoReadFile('262_absent.dts')\n+        data = self._DoReadFile('entry/absent.dts')\n         self.assertEqual(U_BOOT_DATA + b'aa' + U_BOOT_IMG_DATA, data)\n \n     def testPackTeeOsElf(self):\n@@ -6481,7 +6481,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n             'tee-os-path': 'tee.elf',\n         }\n         tee_path = self.tee_elf_path\n-        data = self._DoReadFileDtb('263_tee_os_opt.dts',\n+        data = self._DoReadFileDtb('entry/tee_os_opt.dts',\n                                    entry_args=entry_args)[0]\n         self.assertEqual(U_BOOT_DATA + tools.read_file(tee_path) +\n                          U_BOOT_IMG_DATA, data)\n@@ -6586,12 +6586,12 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testNull(self):\n         \"\"\"Test an image with a null entry\"\"\"\n-        data = self._DoReadFile('268_null.dts')\n+        data = self._DoReadFile('entry/null.dts')\n         self.assertEqual(U_BOOT_DATA + b'\\xff\\xff\\xff\\xff' + U_BOOT_IMG_DATA, data)\n \n     def testOverlap(self):\n         \"\"\"Test an image with a overlapping entry\"\"\"\n-        data = self._DoReadFile('269_overlap.dts')\n+        data = self._DoReadFile('entry/overlap.dts')\n         self.assertEqual(U_BOOT_DATA[:1] + b'aa' + U_BOOT_DATA[3:], data)\n \n         image = control.images['image']\n@@ -6605,7 +6605,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n \n     def testOverlapNull(self):\n         \"\"\"Test an image with a null overlap\"\"\"\n-        data = self._DoReadFile('270_overlap_null.dts')\n+        data = self._DoReadFile('entry/overlap_null.dts')\n         self.assertEqual(U_BOOT_DATA, data[:len(U_BOOT_DATA)])\n \n         # Check the FMAP\n@@ -6639,7 +6639,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testOverlapBad(self):\n         \"\"\"Test an image with a bad overlapping entry\"\"\"\n         with self.assertRaises(ValueError) as exc:\n-            self._DoReadFile('271_overlap_bad.dts')\n+            self._DoReadFile('entry/overlap_bad.dts')\n         self.assertIn(\n             \"Node '/binman/inset': Offset 0x10 (16) ending at 0x12 (18) must overlap with existing entries\",\n             str(exc.exception))\n@@ -6647,7 +6647,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testOverlapNoOffset(self):\n         \"\"\"Test an image with a bad overlapping entry\"\"\"\n         with self.assertRaises(ValueError) as exc:\n-            self._DoReadFile('272_overlap_no_size.dts')\n+            self._DoReadFile('entry/overlap_no_size.dts')\n         self.assertIn(\n             \"Node '/binman/inset': 'fill' entry is missing properties: size\",\n             str(exc.exception))\n@@ -6678,7 +6678,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n         TestFunctional._MakeInputFile('blob_syms.bin',\n             tools.read_file(self.ElfTestFile('blob_syms.bin')))\n \n-        data = self._DoReadFile('274_offset_from_elf.dts')\n+        data = self._DoReadFile('entry/offset_from_elf.dts')\n \n         syms = elf.GetSymbols(elf_fname, ['binman', 'image'])\n         base = elf.GetSymbolAddress(elf_fname, '__my_start_sym')\n@@ -6781,7 +6781,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n         \"\"\"Test replacing an entry in a section\"\"\"\n         expect_data = b'w' * len(U_BOOT_DATA + COMPRESS_DATA)\n         entry_data, expected_fdtmap, image = self._RunReplaceCmd('section/blob',\n-            expect_data, dts='241_replace_section_simple.dts')\n+            expect_data, dts='entry/replace_section_simple.dts')\n         self.assertEqual(expect_data, entry_data)\n \n         entries = image.GetEntries()\n@@ -6808,7 +6808,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n         expect_data = b'w' * len(U_BOOT_DATA + COMPRESS_DATA)\n         entry_data, expected_fdtmap, image = self._RunReplaceCmd(\n             'section/section/blob', expect_data,\n-            dts='278_replace_section_deep.dts')\n+            dts='entry/replace_section_deep.dts')\n         self.assertEqual(expect_data, entry_data)\n \n         entries = image.GetEntries()\n@@ -7034,7 +7034,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testTemplate(self):\n         \"\"\"Test using a template\"\"\"\n         TestFunctional._MakeInputFile('vga2.bin', b'#' + VGA_DATA)\n-        data = self._DoReadFile('286_template.dts')\n+        data = self._DoReadFile('entry/template.dts')\n         first = U_BOOT_DATA + VGA_DATA + U_BOOT_DTB_DATA\n         second = U_BOOT_DATA + b'#' + VGA_DATA + U_BOOT_DTB_DATA\n         self.assertEqual(U_BOOT_IMG_DATA + first + second, data)\n@@ -7059,7 +7059,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n         \"\"\"Test using a template with 'multiple-images' enabled\"\"\"\n         TestFunctional._MakeInputFile('my-blob.bin', b'blob')\n         TestFunctional._MakeInputFile('my-blob2.bin', b'other')\n-        retcode = self._DoTestFile('287_template_multi.dts')\n+        retcode = self._DoTestFile('entry/template_multi.dts')\n \n         self.assertEqual(0, retcode)\n         image = control.images['image']\n@@ -7077,7 +7077,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n     def testTemplateSection(self):\n         \"\"\"Test using a template in a section (not at top level)\"\"\"\n         TestFunctional._MakeInputFile('vga2.bin', b'#' + VGA_DATA)\n-        data = self._DoReadFile('289_template_section.dts')\n+        data = self._DoReadFile('entry/template_section.dts')\n         first = U_BOOT_DATA + VGA_DATA + U_BOOT_DTB_DATA\n         second = U_BOOT_DATA + b'#' + VGA_DATA + U_BOOT_DTB_DATA\n         self.assertEqual(U_BOOT_IMG_DATA + first + second + first, data)\n@@ -7151,7 +7151,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n         entry_args = {\n             'atf-bl31-path': 'bl31.elf',\n         }\n-        data = self._DoReadFileDtb('309_template_phandle.dts',\n+        data = self._DoReadFileDtb('entry/template_phandle.dts',\n                                    entry_args=entry_args)\n         fname = tools.get_output_filename('image.bin')\n         out = tools.run('dumpimage', '-l', fname)\n@@ -7167,7 +7167,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n             'atf-bl31-path': 'bl31.elf',\n         }\n         with self.assertRaises(ValueError) as e:\n-            self._DoReadFileDtb('310_template_phandle_dup.dts',\n+            self._DoReadFileDtb('entry/template_phandle_dup.dts',\n                                 entry_args=entry_args)\n         self.assertIn(\n             'Duplicate phandle 1 in nodes /binman/image/fit/images/atf/atf-bl31 and /binman/image-2/fit/images/atf/atf-bl31',\n@@ -8309,7 +8309,7 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap\n         TestFunctional._MakeInputFile('my-blob.bin', b'blob')\n         TestFunctional._MakeInputFile('my-blob2.bin', b'other')\n         with terminal.capture() as (_, stderr):\n-            self._DoTestFile('346_remove_template.dts',\n+            self._DoTestFile('entry/remove_template.dts',\n                              force_missing_bintools='openssl',)\n         err = stderr.getvalue()\n         self.assertRegex(err, \"Image 'file2'.*missing bintools.*: openssl\")\ndiff --git a/tools/binman/test/262_absent.dts b/tools/binman/test/entry/absent.dts\nsimilarity index 100%\nrename from tools/binman/test/262_absent.dts\nrename to tools/binman/test/entry/absent.dts\ndiff --git a/tools/binman/test/198_collection.dts b/tools/binman/test/entry/collection.dts\nsimilarity index 100%\nrename from tools/binman/test/198_collection.dts\nrename to tools/binman/test/entry/collection.dts\ndiff --git a/tools/binman/test/246_collection_other.dts b/tools/binman/test/entry/collection_other.dts\nsimilarity index 100%\nrename from tools/binman/test/246_collection_other.dts\nrename to tools/binman/test/entry/collection_other.dts\ndiff --git a/tools/binman/test/199_collection_section.dts b/tools/binman/test/entry/collection_section.dts\nsimilarity index 100%\nrename from tools/binman/test/199_collection_section.dts\nrename to tools/binman/test/entry/collection_section.dts\ndiff --git a/tools/binman/test/083_compress.dts b/tools/binman/test/entry/compress.dts\nsimilarity index 100%\nrename from tools/binman/test/083_compress.dts\nrename to tools/binman/test/entry/compress.dts\ndiff --git a/tools/binman/test/186_compress_extra.dts b/tools/binman/test/entry/compress_extra.dts\nsimilarity index 100%\nrename from tools/binman/test/186_compress_extra.dts\nrename to tools/binman/test/entry/compress_extra.dts\ndiff --git a/tools/binman/test/182_compress_image.dts b/tools/binman/test/entry/compress_image.dts\nsimilarity index 100%\nrename from tools/binman/test/182_compress_image.dts\nrename to tools/binman/test/entry/compress_image.dts\ndiff --git a/tools/binman/test/183_compress_image_less.dts b/tools/binman/test/entry/compress_image_less.dts\nsimilarity index 100%\nrename from tools/binman/test/183_compress_image_less.dts\nrename to tools/binman/test/entry/compress_image_less.dts\ndiff --git a/tools/binman/test/185_compress_section.dts b/tools/binman/test/entry/compress_section.dts\nsimilarity index 100%\nrename from tools/binman/test/185_compress_section.dts\nrename to tools/binman/test/entry/compress_section.dts\ndiff --git a/tools/binman/test/184_compress_section_size.dts b/tools/binman/test/entry/compress_section_size.dts\nsimilarity index 100%\nrename from tools/binman/test/184_compress_section_size.dts\nrename to tools/binman/test/entry/compress_section_size.dts\ndiff --git a/tools/binman/test/096_elf.dts b/tools/binman/test/entry/elf.dts\nsimilarity index 100%\nrename from tools/binman/test/096_elf.dts\nrename to tools/binman/test/entry/elf.dts\ndiff --git a/tools/binman/test/097_elf_strip.dts b/tools/binman/test/entry/elf_strip.dts\nsimilarity index 100%\nrename from tools/binman/test/097_elf_strip.dts\nrename to tools/binman/test/entry/elf_strip.dts\ndiff --git a/tools/binman/test/062_entry_args.dts b/tools/binman/test/entry/entry_args.dts\nsimilarity index 100%\nrename from tools/binman/test/062_entry_args.dts\nrename to tools/binman/test/entry/entry_args.dts\ndiff --git a/tools/binman/test/063_entry_args_missing.dts b/tools/binman/test/entry/entry_args_missing.dts\nsimilarity index 100%\nrename from tools/binman/test/063_entry_args_missing.dts\nrename to tools/binman/test/entry/entry_args_missing.dts\ndiff --git a/tools/binman/test/064_entry_args_required.dts b/tools/binman/test/entry/entry_args_required.dts\nsimilarity index 100%\nrename from tools/binman/test/064_entry_args_required.dts\nrename to tools/binman/test/entry/entry_args_required.dts\ndiff --git a/tools/binman/test/065_entry_args_unknown_datatype.dts b/tools/binman/test/entry/entry_args_unknown_datatype.dts\nsimilarity index 100%\nrename from tools/binman/test/065_entry_args_unknown_datatype.dts\nrename to tools/binman/test/entry/entry_args_unknown_datatype.dts\ndiff --git a/tools/binman/test/174_env.dts b/tools/binman/test/entry/env.dts\nsimilarity index 100%\nrename from tools/binman/test/174_env.dts\nrename to tools/binman/test/entry/env.dts\ndiff --git a/tools/binman/test/175_env_no_size.dts b/tools/binman/test/entry/env_no_size.dts\nsimilarity index 100%\nrename from tools/binman/test/175_env_no_size.dts\nrename to tools/binman/test/entry/env_no_size.dts\ndiff --git a/tools/binman/test/176_env_too_small.dts b/tools/binman/test/entry/env_too_small.dts\nsimilarity index 100%\nrename from tools/binman/test/176_env_too_small.dts\nrename to tools/binman/test/entry/env_too_small.dts\ndiff --git a/tools/binman/test/084_files.dts b/tools/binman/test/entry/files.dts\nsimilarity index 100%\nrename from tools/binman/test/084_files.dts\nrename to tools/binman/test/entry/files.dts\ndiff --git a/tools/binman/test/190_files_align.dts b/tools/binman/test/entry/files_align.dts\nsimilarity index 100%\nrename from tools/binman/test/190_files_align.dts\nrename to tools/binman/test/entry/files_align.dts\ndiff --git a/tools/binman/test/085_files_compress.dts b/tools/binman/test/entry/files_compress.dts\nsimilarity index 100%\nrename from tools/binman/test/085_files_compress.dts\nrename to tools/binman/test/entry/files_compress.dts\ndiff --git a/tools/binman/test/087_files_no_pattern.dts b/tools/binman/test/entry/files_no_pattern.dts\nsimilarity index 100%\nrename from tools/binman/test/087_files_no_pattern.dts\nrename to tools/binman/test/entry/files_no_pattern.dts\ndiff --git a/tools/binman/test/086_files_none.dts b/tools/binman/test/entry/files_none.dts\nsimilarity index 100%\nrename from tools/binman/test/086_files_none.dts\nrename to tools/binman/test/entry/files_none.dts\ndiff --git a/tools/binman/test/069_fill.dts b/tools/binman/test/entry/fill.dts\nsimilarity index 100%\nrename from tools/binman/test/069_fill.dts\nrename to tools/binman/test/entry/fill.dts\ndiff --git a/tools/binman/test/080_fill_empty.dts b/tools/binman/test/entry/fill_empty.dts\nsimilarity index 100%\nrename from tools/binman/test/080_fill_empty.dts\nrename to tools/binman/test/entry/fill_empty.dts\ndiff --git a/tools/binman/test/070_fill_no_size.dts b/tools/binman/test/entry/fill_no_size.dts\nsimilarity index 100%\nrename from tools/binman/test/070_fill_no_size.dts\nrename to tools/binman/test/entry/fill_no_size.dts\ndiff --git a/tools/binman/test/188_image_entryarg.dts b/tools/binman/test/entry/image_entryarg.dts\nsimilarity index 100%\nrename from tools/binman/test/188_image_entryarg.dts\nrename to tools/binman/test/entry/image_entryarg.dts\ndiff --git a/tools/binman/test/127_list.dts b/tools/binman/test/entry/list.dts\nsimilarity index 100%\nrename from tools/binman/test/127_list.dts\nrename to tools/binman/test/entry/list.dts\ndiff --git a/tools/binman/test/056_name_prefix.dts b/tools/binman/test/entry/name_prefix.dts\nsimilarity index 100%\nrename from tools/binman/test/056_name_prefix.dts\nrename to tools/binman/test/entry/name_prefix.dts\ndiff --git a/tools/binman/test/268_null.dts b/tools/binman/test/entry/null.dts\nsimilarity index 100%\nrename from tools/binman/test/268_null.dts\nrename to tools/binman/test/entry/null.dts\ndiff --git a/tools/binman/test/274_offset_from_elf.dts b/tools/binman/test/entry/offset_from_elf.dts\nsimilarity index 100%\nrename from tools/binman/test/274_offset_from_elf.dts\nrename to tools/binman/test/entry/offset_from_elf.dts\ndiff --git a/tools/binman/test/269_overlap.dts b/tools/binman/test/entry/overlap.dts\nsimilarity index 100%\nrename from tools/binman/test/269_overlap.dts\nrename to tools/binman/test/entry/overlap.dts\ndiff --git a/tools/binman/test/271_overlap_bad.dts b/tools/binman/test/entry/overlap_bad.dts\nsimilarity index 100%\nrename from tools/binman/test/271_overlap_bad.dts\nrename to tools/binman/test/entry/overlap_bad.dts\ndiff --git a/tools/binman/test/272_overlap_no_size.dts b/tools/binman/test/entry/overlap_no_size.dts\nsimilarity index 100%\nrename from tools/binman/test/272_overlap_no_size.dts\nrename to tools/binman/test/entry/overlap_no_size.dts\ndiff --git a/tools/binman/test/270_overlap_null.dts b/tools/binman/test/entry/overlap_null.dts\nsimilarity index 100%\nrename from tools/binman/test/270_overlap_null.dts\nrename to tools/binman/test/entry/overlap_null.dts\ndiff --git a/tools/binman/test/045_prop_test.dts b/tools/binman/test/entry/prop_test.dts\nsimilarity index 100%\nrename from tools/binman/test/045_prop_test.dts\nrename to tools/binman/test/entry/prop_test.dts\ndiff --git a/tools/binman/test/191_read_image_skip.dts b/tools/binman/test/entry/read_image_skip.dts\nsimilarity index 100%\nrename from tools/binman/test/191_read_image_skip.dts\nrename to tools/binman/test/entry/read_image_skip.dts\ndiff --git a/tools/binman/test/346_remove_template.dts b/tools/binman/test/entry/remove_template.dts\nsimilarity index 100%\nrename from tools/binman/test/346_remove_template.dts\nrename to tools/binman/test/entry/remove_template.dts\ndiff --git a/tools/binman/test/132_replace.dts b/tools/binman/test/entry/replace.dts\nsimilarity index 100%\nrename from tools/binman/test/132_replace.dts\nrename to tools/binman/test/entry/replace.dts\ndiff --git a/tools/binman/test/143_replace_all.dts b/tools/binman/test/entry/replace_all.dts\nsimilarity index 100%\nrename from tools/binman/test/143_replace_all.dts\nrename to tools/binman/test/entry/replace_all.dts\ndiff --git a/tools/binman/test/133_replace_multi.dts b/tools/binman/test/entry/replace_multi.dts\nsimilarity index 100%\nrename from tools/binman/test/133_replace_multi.dts\nrename to tools/binman/test/entry/replace_multi.dts\ndiff --git a/tools/binman/test/139_replace_repack.dts b/tools/binman/test/entry/replace_repack.dts\nsimilarity index 100%\nrename from tools/binman/test/139_replace_repack.dts\nrename to tools/binman/test/entry/replace_repack.dts\ndiff --git a/tools/binman/test/278_replace_section_deep.dts b/tools/binman/test/entry/replace_section_deep.dts\nsimilarity index 100%\nrename from tools/binman/test/278_replace_section_deep.dts\nrename to tools/binman/test/entry/replace_section_deep.dts\ndiff --git a/tools/binman/test/241_replace_section_simple.dts b/tools/binman/test/entry/replace_section_simple.dts\nsimilarity index 100%\nrename from tools/binman/test/241_replace_section_simple.dts\nrename to tools/binman/test/entry/replace_section_simple.dts\ndiff --git a/tools/binman/test/239_replace_with_bintool.dts b/tools/binman/test/entry/replace_with_bintool.dts\nsimilarity index 100%\nrename from tools/binman/test/239_replace_with_bintool.dts\nrename to tools/binman/test/entry/replace_with_bintool.dts\ndiff --git a/tools/binman/test/261_section_fname.dts b/tools/binman/test/entry/section_fname.dts\nsimilarity index 100%\nrename from tools/binman/test/261_section_fname.dts\nrename to tools/binman/test/entry/section_fname.dts\ndiff --git a/tools/binman/test/202_section_timeout.dts b/tools/binman/test/entry/section_timeout.dts\nsimilarity index 100%\nrename from tools/binman/test/202_section_timeout.dts\nrename to tools/binman/test/entry/section_timeout.dts\ndiff --git a/tools/binman/test/055_sections.dts b/tools/binman/test/entry/sections.dts\nsimilarity index 100%\nrename from tools/binman/test/055_sections.dts\nrename to tools/binman/test/entry/sections.dts\ndiff --git a/tools/binman/test/259_symlink.dts b/tools/binman/test/entry/symlink.dts\nsimilarity index 100%\nrename from tools/binman/test/259_symlink.dts\nrename to tools/binman/test/entry/symlink.dts\ndiff --git a/tools/binman/test/222_tee_os.dts b/tools/binman/test/entry/tee_os.dts\nsimilarity index 100%\nrename from tools/binman/test/222_tee_os.dts\nrename to tools/binman/test/entry/tee_os.dts\ndiff --git a/tools/binman/test/263_tee_os_opt.dts b/tools/binman/test/entry/tee_os_opt.dts\nsimilarity index 100%\nrename from tools/binman/test/263_tee_os_opt.dts\nrename to tools/binman/test/entry/tee_os_opt.dts\ndiff --git a/tools/binman/test/286_template.dts b/tools/binman/test/entry/template.dts\nsimilarity index 100%\nrename from tools/binman/test/286_template.dts\nrename to tools/binman/test/entry/template.dts\ndiff --git a/tools/binman/test/287_template_multi.dts b/tools/binman/test/entry/template_multi.dts\nsimilarity index 100%\nrename from tools/binman/test/287_template_multi.dts\nrename to tools/binman/test/entry/template_multi.dts\ndiff --git a/tools/binman/test/309_template_phandle.dts b/tools/binman/test/entry/template_phandle.dts\nsimilarity index 100%\nrename from tools/binman/test/309_template_phandle.dts\nrename to tools/binman/test/entry/template_phandle.dts\ndiff --git a/tools/binman/test/310_template_phandle_dup.dts b/tools/binman/test/entry/template_phandle_dup.dts\nsimilarity index 100%\nrename from tools/binman/test/310_template_phandle_dup.dts\nrename to tools/binman/test/entry/template_phandle_dup.dts\ndiff --git a/tools/binman/test/289_template_section.dts b/tools/binman/test/entry/template_section.dts\nsimilarity index 100%\nrename from tools/binman/test/289_template_section.dts\nrename to tools/binman/test/entry/template_section.dts\ndiff --git a/tools/binman/test/066_text.dts b/tools/binman/test/entry/text.dts\nsimilarity index 100%\nrename from tools/binman/test/066_text.dts\nrename to tools/binman/test/entry/text.dts\ndiff --git a/tools/binman/test/237_unique_names.dts b/tools/binman/test/entry/unique_names.dts\nsimilarity index 100%\nrename from tools/binman/test/237_unique_names.dts\nrename to tools/binman/test/entry/unique_names.dts\ndiff --git a/tools/binman/test/238_unique_names_multi.dts b/tools/binman/test/entry/unique_names_multi.dts\nsimilarity index 100%\nrename from tools/binman/test/238_unique_names_multi.dts\nrename to tools/binman/test/entry/unique_names_multi.dts\ndiff --git a/tools/binman/test/057_unknown_contents.dts b/tools/binman/test/entry/unknown_contents.dts\nsimilarity index 100%\nrename from tools/binman/test/057_unknown_contents.dts\nrename to tools/binman/test/entry/unknown_contents.dts\ndiff --git a/tools/binman/test/041_unknown_pos_size.dts b/tools/binman/test/entry/unknown_pos_size.dts\nsimilarity index 100%\nrename from tools/binman/test/041_unknown_pos_size.dts\nrename to tools/binman/test/entry/unknown_pos_size.dts\n",
    "prefixes": [
        "v2",
        "16/23"
    ]
}