From patchwork Sun Apr 26 15:40:35 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4566 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id CDE793F36A for ; Sun, 26 Apr 2026 17:41:05 +0200 (CEST) Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-43ea7a5da57sf7784844f8f.1 for ; Sun, 26 Apr 2026 08:41:05 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1777218065; cv=pass; d=google.com; s=arc-20240605; b=i0M9EqkJrZYAPArG10aCYghdyBmPcOcZLoGBGnj/LYPP9KFjSTuPjZeo476ElImX7P OgSmE9Df533gk0dpb8PQOhToPZHhIaY0AFcAW7iWcUtnNsPxR9d/Jw1JBnHk5cyMBlyl Mr8+Grf7lowx/T1Yh+oqwI6wjzAnf2MSeS1IFesA34fJokxN8n3Ej3/HDQeNqI9KFWta M7mFNfdIDnZx+0sLZNKEbydmYuQMrYs7Jxy+mxKwnHK4oNLEAPifmsAHhJutCIGJYapd FmHWFA+bnt5+kq5E/Q80C0+f6aC4J17MMysUSgZHJk36S0RlJkK8J2a+ck5emw3RYYKZ +I0w== 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=b+ODk8c8Jcn/bZ3VI6HOVSMVesmCva/Jysz+rwc0SoY=; fh=/O0xAHWzO0s4Q4qkXHv3fA/5ObaJX9Bi2iVFtXcsIl8=; b=YvcfGkC37zudBbDYbfNSXRLUGnozUmkWIL5XVEHSPo84lWsMgcweqmBkNTRd8A9Jx1 g4AXgAZ//lPpV+L+n1D1QAk7wupaoXXDv9M9PuPtvX5sLXUCtBOZvWflRcUIACbtzUnp PBp6Z6Bu+AExfirQ9CM+siR7UNy39QpJvm4GU7nlWcmg4FUwuVSz5UMZOZTWefB3Go8l NKJFzGKw259mgE+vO4eCdJiLmU2TrcjlUdtVDNjH2piZ2xNtqvytKrXVSxKqM0KklJCf cZ3AFE77iBFF1v4+L7f+6/TSxzHVUzETJpXMnYdaPlom/9YCxjgKJ6M24W0hgf4xF4mQ piOQ==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=cm1kJhS8; 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=1777218065; x=1777822865; 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=b+ODk8c8Jcn/bZ3VI6HOVSMVesmCva/Jysz+rwc0SoY=; b=V9R03Hedq+zy8eQ8SZn2snAiZXLm/ow5u4JiCVucij8LVLVceh7dPIgqa7z308E0ql XAJEJDbM4Hr2F89eZHX3gjkV3OT2czIu+OZJlw0LS4uKId7cPDL9b9yi3GUlwwittM+I 07aPDSHhNJKERrz781WLJXNzpdeo92OtrNne0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777218065; x=1777822865; 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=b+ODk8c8Jcn/bZ3VI6HOVSMVesmCva/Jysz+rwc0SoY=; b=Y0fBZEpLokddletxWgONDioyMiQe1uazXBch8AJnNtADVbcTE+yz0DFuIyehT9W1vo 4KVuwljY2HtL33yeaZe2lgbNDcBno12vgCWCWJM81uf4e1XGF/XvQs9fvbCpF7oOmMNW fi11FRecbVLjA0bA99Zzce82wR/fnfJF/86mYOM5rVdpOD7TsA42PDRt7DlAzp52cS/q zmuEQP+0qOI661BIwrsE1Ujbn5su3szpPUUjHZPIuvwR6OX1/MH9N+GiAQ+L8AzWNAzJ XxYU50hm6T+7tGHU4UvCMVMiPG9OI0qaxtd3oBM+/iE/rpYF8BX2fblP9H+OjV2DoKo2 UE6g== X-Forwarded-Encrypted: i=2; AFNElJ/tjVaEi8bGJJdYywNcDoMm/LXRT8xh/OvWCj1YRvQ8WhaTHuz/+1O147+eLLP3pYYhGE2jCfe+PdlyiHvm@patchwork.amarulasolutions.com X-Gm-Message-State: AOJu0YzrhaMbQCbO+3o+IRK9rgz3Imb03M0xoC5QLa9PjHlcIHQ83xWK PFMf5hYv5mVYkSpXtHhtTMFLVeUKmp36c9JX7BfX7vbmShurRlLlNY8xZNGGjgw/JtPlM/9SDGl 6gA== X-Received: by 2002:a05:600c:4fd1:b0:488:78f2:6b0 with SMTP id 5b1f17b1804b1-488fb78ede0mr561946245e9.29.1777218065417; Sun, 26 Apr 2026 08:41:05 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h="AYAyTiIBy8pi5rtPZugkmjfUPsDegolseEMIFEEkqrEoL1Q9Xg==" Received: by 2002:a05:600c:1549:b0:488:9946:181c with SMTP id 5b1f17b1804b1-48a5a517368ls37379565e9.2.-pod-prod-09-eu; Sun, 26 Apr 2026 08:41:04 -0700 (PDT) X-Received: by 2002:a05:600c:a30b:b0:487:4eb:d125 with SMTP id 5b1f17b1804b1-488fb74dff1mr399303955e9.9.1777218063787; Sun, 26 Apr 2026 08:41:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777218063; cv=none; d=google.com; s=arc-20240605; b=X8eRjpb8lCCsziIUzbzOSBdHtDEpQmIiyA+qAVYDdAv7V5sNHgK+/qiHKQjbpqYt15 ks/mLkVwriEchtGzF9ISBRJvVzvBHRDoGG51gXPMKh9TO/Cv4eu/KJI/AoRaJO51l7XI p5uetWDMcPOTTTkxWQoIyKSFYAygJw8cBsxtYn4AVJPEv7FDG1XOwXI1ZZa6hQDKbxkC amKijLrFt4wsDkLTj6lqmATkXB3Ag+w9S2HzEZrbzh59Zz1vK26p667vFoufx2VlWApn 1LlB9eYDBo0idxbRMHbpg4+PuXKlFTaWWlrN8/LGh9aNFAKAfq/GAzyS17FaPHjh4Dgl LnDw== 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=IVsjyrw/fL525sUdL9iFA9duSvhB3yIwLOw0Mn9NBrE=; fh=lYbmBBhXSL3Ep8kOpkVpo+naQp+9GmHm2/nXD6G93jQ=; b=lV2TiTbzjfYfBUp6elG6iNgl834T/QLJ/lDaZNxXwzlt983xfFyv48WBDs7eU3i+8K itKIBtVwXCTWLQycBQ9Rgx+dRONJsi2LASma+QLCzTmNV717mWVCQM4hrCm3g3pPULWt BqZRyi2x2QsvT9eTTz9jGE55C1pJiMxEExGD+YtGp6TBIUw6ZTm2T9yD5f5UHcUGmPOY X3cxBiMK7ZUMa6e6NKh/SAnt/BOGjKXmk7fLNjgUEnXwMGpI096oH6DThx0EhgAquSzn /Q00AGQRgNr5cH4qHMHtxNpVK4pHIfzF0PUZdq+KmlofagKsGH6dvxTPJdMNYyu9mUNu GrcA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=cm1kJhS8; 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-488fc160a93sor39866065e9.13.2026.04.26.08.41.03 for (Google Transport Security); Sun, 26 Apr 2026 08:41:03 -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: AeBDiesDW8YoUHRYqZj5KOx+Ced4Mxs7Jm9EzX8YxnaAkai9Rr8zCX7h+b6qqGzQ//w pf+JbpXp5ehd1yUFCMj8dCNFf3vHkg21z71APWmeC70vwg1g+HS21XtnQxhpXmVs32eDitwxIcg qUWtkeLNcG+ZY5fZG90RYJGSNxemOpDu1xFyAfZYesqkvYOQWqigyxnwdV5s6MpMhL4uBNNXqjz HTexvErfPS1e5IPa2rRuYCyQ0ZWagLqq7k0B3D5yw6Iiz61GifXZXgncDCdqKIXf76RmC6e+QLI xMczzbnqrlZF581FdsOY2e8pdYFitn3ZwakZfb0kKQ8ja5sokqcafZ0qhUHhcELwKAfq7ddfIpE RwjdzttvSbL8WTdlPHTY6CXYuv/TdDsSOByYR5Q3QDmVQEI3KRyFmzakZydJROOASaU7L1RMK7s z5pUMS4PavAhfN0rB33eEYeYR4kglClMZwUunFZrqwsxmeIr3dcac5XgHhCGxJ53f1YVXlDqHZt ztQvsvojX3k1O9YNHSQzhug37KinKGZrYBL7TOjr/zBznS2PgM4rLRGocvGwMA3pXtYzfLC7lb/ WWpleZAgLoOoVWBPTLipP4Akj/g7ew== X-Received: by 2002:a05:600c:444a:b0:487:1520:d107 with SMTP id 5b1f17b1804b1-488fb793580mr532118375e9.31.1777218063324; Sun, 26 Apr 2026 08:41:03 -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 5b1f17b1804b1-4891bb3d121sm802593765e9.14.2026.04.26.08.41.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Apr 2026 08:41:02 -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 v6 3/8] test: cmd: add unit tests for part command Date: Sun, 26 Apr 2026 17:40:35 +0200 Message-ID: <20260426154054.2040932-4-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260426154054.2040932-1-dario.binacchi@amarulasolutions.com> References: <20260426154054.2040932-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=cm1kJhS8; 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 --- 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);