From patchwork Sun Apr 26 15:46:56 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4575 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id C25AF3F206 for ; Sun, 26 Apr 2026 17:47:35 +0200 (CEST) Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-488d9e1e61asf80225145e9.0 for ; Sun, 26 Apr 2026 08:47:35 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1777218455; cv=pass; d=google.com; s=arc-20240605; b=GU8+Wi/cfW1sR90yyTehePP+dgech+6ZZN8SWoVcaxOVi8nNKNk6Pn8EZbTfhdvS2h 5mZXypyYStmQ+vOB64iDzdJZoe+tlfi/CSIVg090mYh9YT0P5nxlffnTN5EoAPAJQ4E2 Lzujpwm0+dS47Q5j9Oex8STdt7u8DG4vJ+dD+HwUaSgmpc5/4WG4qd00bYVRYinMgOL+ IupIlBJAzNCGiNMQkHSfaaDtbNWQRoortvgWXOWbvraCMZhm9ygSmcseonDVephHsq+N U9UUPzVtUwmZDII4L5YKspVec+NIZTcWBXcvSScvFgVj/fwsKwBhpFW1ScDRuEQDmr/+ Z2Ug== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=w0yuqkQ9UEGV7c9h5MTnZlGTgVyeKpT9d7bYjnGp0zk=; fh=NHO2Y7X+YOHEqeUwrF5TmWi03EvIbQkvjP8a+h4rGlY=; b=TXtz1UkNyHSL9QsN19C9+aCwWFWX7saJw57oYp/ZKevGl2uFsbK9nPcdwGC9CfOfDH N1vnS/KTiqG1Wox88RvuU5vtuBWXVR5SSSkv0AtO84fdvi2HSKYfE1WjcbnU993JRYiE Z7+HNL6PARqg8HZpkaTRVmw9m7pqp1WqqY7ORp/UHrqM+D4GXtouHqlOH0GvIHnut2j+ Xqhts+udz9MyfDJ7yCw3x87gBxS1CAWe7hGJKX77i61JZcxOKOM3WDsc3ccs4/gWXXhl tal/oNQvrg/pGmRXNfvTpLET2/ULehVpdHf2YnMwEVEkmdHEzbZUzhR9aYpMxIOLj2/u F9AA==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=Tf3wjbIj; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=neutral header.i=@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1777218455; x=1777823255; darn=patchwork.amarulasolutions.com; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=w0yuqkQ9UEGV7c9h5MTnZlGTgVyeKpT9d7bYjnGp0zk=; b=cP0x8jDoQZGycn56DTsga7/sTFM1VZ4kJliKC5CAiPUaQKwh5TVymgQQUiMDe5alze XkMZnxsuFlJG6Jd/AUzfk/eV78WRCAmRjTDVz9t024yJYGR83/wDSb5MshViagJxIAoP Jp3lH82HxsryJjp1qOe6hCZxO+c5CdEUGrx1c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777218455; x=1777823255; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-beenthere:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=w0yuqkQ9UEGV7c9h5MTnZlGTgVyeKpT9d7bYjnGp0zk=; b=gncWepSOO8LXrPiDQ3wFgcwjdA8V/qToBiPA6Va48v79n4jli1lMlxfbryVomww3Hg IROIaEDU6ZEBymmBQZ7iK4QiSS5jFiyDgfWsoriVwdJroAXh6D+5/Jc5r+NxTQR2uyZ+ iHPwA+x7aKsXnvTZ4gUtdorC9Wl0y3C/eFArLInIj15d1CTjItint00RGev6+0c51NAq DULdVuKetM34Wy+OreNI10EMHrDg3seAG9O7un2c1RbSg5XrrqgPj2WOqYir1UQ1h9Ge kGty5dQC7TrDAXWqcbXed56vgdAO9mK9shE61rRPnNybFt3XLPRwMmuY2AJ+1aqb1Lqd 7QtQ== X-Forwarded-Encrypted: i=2; AFNElJ9n4V41o7wreeviKvuhwzLzxWdKRy1tPYTU9WH4Z2k4RjS9YR8032pLm/7znbzqQ+vE45ten5R9mU2LPVf2@patchwork.amarulasolutions.com X-Gm-Message-State: AOJu0YypRuxrI8JK7EwCV90lpCiURRi4ww7X8ROxT7aT9QxxElUGPvTk 3+2JTZyyaJPRgNz0D8icXs/fYZoICxIikW0T10OCVin6dqyHMIwQS+y0fym8cX6Xz8xFiP+HIjK 04g== X-Received: by 2002:a05:600c:1993:b0:489:e696:836f with SMTP id 5b1f17b1804b1-489e69686a7mr386656225e9.10.1777218455384; Sun, 26 Apr 2026 08:47:35 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h="AYAyTiIAe8ftMvT2xn9uwuGBzdNH4IumsKy3x05AfSQIreTq4w==" Received: by 2002:a05:600c:1549:b0:488:9946:181c with SMTP id 5b1f17b1804b1-48a5a517368ls37398065e9.2.-pod-prod-09-eu; Sun, 26 Apr 2026 08:47:34 -0700 (PDT) X-Received: by 2002:a05:600c:a30b:b0:488:a639:b772 with SMTP id 5b1f17b1804b1-488fb7467e9mr411440995e9.7.1777218453697; Sun, 26 Apr 2026 08:47:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777218453; cv=none; d=google.com; s=arc-20240605; b=Lnr6Lro4vMmcfWCB82NTEXunKWABxObS8LpLSol83GUeMCWfLzmmMDha3idBRP1F7C TeOklzzWT2w3nbS2h8MG44BITC3sa9EvSLatPWwd4OIiaTZO28WCFG9Z4oyVzllxWcT1 7hkYAap7/eoudTixJxgqWpFP78ZvuC63HkOJYvxSJj7vg/aJn77TtEgw8GdIk3U7WbYC /029JsUGwcf2FOXAZorEoikMXv4qrttWIieXZE0yD/Bhi4SE/EkUUM10+sIVk+yr6OEI 4l87ar2PHLd59z0yXSkh7d6pTxpPCXb91vM4oGvQmxiXj6bLZurrkGos1Q3lBJL/GKrE g9Tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=f4MKtAW7WUF1UijbrIXVqwjoMi3T7GY9a2EZQvpWa84=; fh=lYbmBBhXSL3Ep8kOpkVpo+naQp+9GmHm2/nXD6G93jQ=; b=RKwaDTIyRg2T3t/Rcx5RDtCQusK6jY2XBlLjPxlbPdLVs++SS7sYSx/UxwPsfm2jrk V+76yVUKEZgIGaHzp7TXZLuKTdV2pTzGLE+PIuvt0U6lChl7aplICtiZkI4aSMD1Dfgy vpkn68p8rpl6qXS0tXt8SNHD8O73nldb4FQuNQ0Ut4g++J3+RdfJsxJQ8c4+2pY8SCiU omAtdTZz3kVesSFJKkI8KHDAwhtNfHvLCdGhuTVXC0k+CUyUrpFf2nSFkvx0oe6/GRn0 OehRel6Q54I+S9N/cLWEO7fZisczZwtPKvw18h3BpsKaupUAREY16mLEPerso5QIP0ks qaXA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=Tf3wjbIj; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=neutral header.i=@amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id 5b1f17b1804b1-48a552c0668sor23380485e9.7.2026.04.26.08.47.33 for (Google Transport Security); Sun, 26 Apr 2026 08:47:33 -0700 (PDT) Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Gm-Gg: AeBDiespaTkdRh0WziZI2N8RZ2y1tv7q56hbsvWf2b3fCbzlzCwdTkjgriNS1Xg6BeY uftBnpcthSEA2ru+8B6aQ+rAhf4Op3diy0U6tkDolDG85rw4Ra5gihFKkYTrl3YWzi1CbmdOZcp xpgFJsTubFr8kC76dDQOpawUGWjNO7HbvbNTy4mQwC2Ldu2Q1d0U+co7DM3EU1FfSQjWRN7d3VV 6z2/RHxMJr9F/GnADLMne7oSOYE0YutEJQa5i5YWU8FknuYdhFD+MEXA9+BmyidSD+Zugk4jEIe ej5wI0tY0fa+oOCkBcX4QrtuEnpXdLSTFB7O6oS+eEyDWzqxX2lW+I+fx6QTkSBu9VI0D9z2KY3 Up3sicQQBBFRh03c7Iwk8zQVKXO/lydFkNHfwV2puKq0P3E0gmgp1jJ4dx8OvU61EOnR31zYZ++ HgFnECRdJmne3jdw9d6n1IVanPTAmZK4FPC7HXWK+evMA5WOsbyTsK9k/VhNKGJCatpoyII8Y95 Y6KY7J0aHdCYIfMG8R2UpKuPyqhJphH/u3PnqqBIUchBMfv6xejPS1NB5uzyEtHpMhnhfVa5ot7 erBbi1q8X0EkquGBtw2HyfiPVvKmEw== X-Received: by 2002:a05:600c:450a:b0:48a:72ab:f88c with SMTP id 5b1f17b1804b1-48a72abf8admr1792735e9.17.1777218453239; Sun, 26 Apr 2026 08:47:33 -0700 (PDT) Received: from dario-ThinkPad-P14s-Gen-5.amarulasolutions.com (host-82-56-22-134.retail.telecomitalia.it. [82.56.22.134]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-44123d23e0bsm34489985f8f.15.2026.04.26.08.47.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 08:47:32 -0700 (PDT) From: Dario Binacchi To: u-boot@lists.denx.de Cc: linux-amarula@amarulasolutions.com, Dario Binacchi , Simon Glass , Bin Meng , Dinesh Maniyam , Heinrich Schuchardt , Marek Vasut , Mattijs Korpershoek , Tom Rini Subject: [PATCH v7 3/8] test: cmd: add unit tests for part command Date: Sun, 26 Apr 2026 17:46:56 +0200 Message-ID: <20260426154724.2042569-4-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426154724.2042569-1-dario.binacchi@amarulasolutions.com> References: <20260426154724.2042569-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: dario.binacchi@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=Tf3wjbIj; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=neutral header.i=@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Add unit tests for the 'part' command, specifically for the 'number', 'start', and 'size' subcommands. These tests establish a baseline for the current partition lookup functionality by name. This foundation will be used by subsequent patches to extend the command, ensuring consistent behavior as new features are introduced. Signed-off-by: Dario Binacchi Reviewed-by: Simon Glass --- (no changes since v6) Changes in v6: - Add Reviewed-by of Simon Glass to patch 3/8 "test: cmd: add unit tests for part command" Changes in v4: - Place the part command tests in the cmd suite rather than the dm suite. - Order the include files according the U-Boot coding style. Changes in v3: - Wrap the lines exceeding 80 columns - Combine run_command() and ut_asserteq() -> ut_asserteq(1, run_command( test/cmd/Makefile | 1 + test/cmd/part.c | 165 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 test/cmd/part.c diff --git a/test/cmd/Makefile b/test/cmd/Makefile index 8c9f112782d0..41fe21a4541e 100644 --- a/test/cmd/Makefile +++ b/test/cmd/Makefile @@ -26,6 +26,7 @@ obj-$(CONFIG_CMD_LOADM) += loadm.o obj-$(CONFIG_CMD_MEMINFO) += meminfo.o obj-$(CONFIG_CMD_MEMORY) += mem_copy.o obj-$(CONFIG_CMD_MEM_SEARCH) += mem_search.o +obj-$(CONFIG_CMD_PART) += part.o ifdef CONFIG_CMD_PCI obj-$(CONFIG_CMD_PCI_MPS) += pci_mps.o endif diff --git a/test/cmd/part.c b/test/cmd/part.c new file mode 100644 index 000000000000..5751dd315dd8 --- /dev/null +++ b/test/cmd/part.c @@ -0,0 +1,165 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Test for part command + * + * Copyright (C) 2026 Amarula Solutions + * Written by Dario Binacchi + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static struct disk_partition gpt_parts[] = { + { + .start = 48, + .size = 1, + .name = "test1", + .uuid = "c5bce7a2-03f0-4d03-9048-01ff23b9d527", + }, + { + .start = 49, + .size = 2, + .name = "test2", + .uuid = "9df346e8-2c53-4cd8-b9ac-3af83f9a9b74", + }, +}; + +static char disk_guid[UUID_STR_LEN + 1] = + "8d60b397-1bb6-4d33-80ee-b1587d24c2f8"; + +static int setup_gpt_partitions(struct unit_test_state *uts, + unsigned int mmc_dev_num) +{ + struct blk_desc *mmc_dev_desc; + char dev_str[10]; + int i; + + snprintf(dev_str, sizeof(dev_str), "%u", mmc_dev_num); + + ut_asserteq(mmc_dev_num, blk_get_device_by_str("mmc", dev_str, + &mmc_dev_desc)); + + if (CONFIG_IS_ENABLED(RANDOM_UUID)) { + for (i = 0; i < ARRAY_SIZE(gpt_parts); i++) + gen_rand_uuid_str(gpt_parts[i].uuid, + UUID_STR_FORMAT_STD); + + gen_rand_uuid_str(disk_guid, UUID_STR_FORMAT_STD); + } + + ut_assertok(gpt_restore(mmc_dev_desc, disk_guid, gpt_parts, + ARRAY_SIZE(gpt_parts))); + return 0; +} + +static int cmd_test_part_number(struct unit_test_state *uts) +{ + unsigned int mmc_dev_num = 2; + char expected[10]; + int i; + + ut_assertok(setup_gpt_partitions(uts, mmc_dev_num)); + + for (i = 0; i < ARRAY_SIZE(gpt_parts); i++) { + env_set("partnum", NULL); + ut_assertok(run_commandf("part number mmc %u %s partnum", + mmc_dev_num, gpt_parts[i].name)); + snprintf(expected, sizeof(expected), "0x%x", i + 1); + ut_asserteq_str(expected, env_get("partnum")); + } + + env_set("partnum", NULL); + ut_asserteq(1, run_commandf("part number mmc %u bogus partnum", + mmc_dev_num)); + ut_assertnull(env_get("partnum")); + + return 0; +} +CMD_TEST(cmd_test_part_number, UTF_CONSOLE); + +static int cmd_test_part_start(struct unit_test_state *uts) +{ + unsigned int mmc_dev_num = 2; + char expected[32]; + int i; + + ut_assertok(setup_gpt_partitions(uts, mmc_dev_num)); + + for (i = 0; i < ARRAY_SIZE(gpt_parts); i++) { + env_set("partstart", NULL); + ut_assertok(run_commandf("part start mmc %u %d partstart", + mmc_dev_num, i + 1)); + snprintf(expected, sizeof(expected), "%lx", + (unsigned long)gpt_parts[i].start); + ut_asserteq_str(expected, env_get("partstart")); + } + + env_set("partstart", NULL); + ut_asserteq(1, run_commandf("part start mmc %u 3 partstart", + mmc_dev_num)); + ut_assertnull(env_get("partstart")); + + for (i = 0; i < ARRAY_SIZE(gpt_parts); i++) { + env_set("partstart", NULL); + ut_assertok(run_commandf("part start mmc %u %s partstart", + mmc_dev_num, gpt_parts[i].name)); + snprintf(expected, sizeof(expected), "%lx", + (unsigned long)gpt_parts[i].start); + ut_asserteq_str(expected, env_get("partstart")); + } + + env_set("partstart", NULL); + ut_asserteq(1, run_commandf("part start mmc %u bogus partstart", + mmc_dev_num)); + ut_assertnull(env_get("partstart")); + + return 0; +} +CMD_TEST(cmd_test_part_start, UTF_CONSOLE); + +static int cmd_test_part_size(struct unit_test_state *uts) +{ + unsigned int mmc_dev_num = 2; + char expected[32]; + int i; + + ut_assertok(setup_gpt_partitions(uts, mmc_dev_num)); + + for (i = 0; i < ARRAY_SIZE(gpt_parts); i++) { + env_set("partsize", NULL); + ut_assertok(run_commandf("part size mmc %u %d partsize", + mmc_dev_num, i + 1)); + snprintf(expected, sizeof(expected), "%lx", + (unsigned long)gpt_parts[i].size); + ut_asserteq_str(expected, env_get("partsize")); + } + + env_set("partsize", NULL); + ut_asserteq(1, run_commandf("part size mmc %u 3 partsize", + mmc_dev_num)); + ut_assertnull(env_get("partsize")); + + for (i = 0; i < ARRAY_SIZE(gpt_parts); i++) { + env_set("partsize", NULL); + ut_assertok(run_commandf("part size mmc %u %s partsize", + mmc_dev_num, gpt_parts[i].name)); + snprintf(expected, sizeof(expected), "%lx", + (unsigned long)gpt_parts[i].size); + ut_asserteq_str(expected, env_get("partsize")); + } + + env_set("partsize", NULL); + ut_asserteq(1, run_commandf("part size mmc %u bogus partsize", + mmc_dev_num)); + ut_assertnull(env_get("partsize")); + + return 0; +} +CMD_TEST(cmd_test_part_size, UTF_CONSOLE);