From patchwork Tue Mar 24 15:17:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niel Fourie X-Patchwork-Id: 244218 List-Id: U-Boot discussion From: lusus at denx.de (Niel Fourie) Date: Tue, 24 Mar 2020 16:17:03 +0100 Subject: [PATCH v3 1/3] cmd: part: Add subcommand to list supported partition tables In-Reply-To: <20200324151705.1798021-1-lusus@denx.de> References: <20200324151705.1798021-1-lusus@denx.de> Message-ID: <20200324151705.1798021-2-lusus@denx.de> Add a subcommand "types" to the part command, which lists the supported partition table types. Signed-off-by: Niel Fourie Cc: Simon Glass Reviewed-by: Simon Glass --- Changes in v2: - Add Python test Changes in v3: - none cmd/part.c | 27 +++++++++++++++++++++++++-- test/py/tests/test_part.py | 14 ++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 test/py/tests/test_part.py diff --git a/cmd/part.c b/cmd/part.c index 5e4e45ca6d..fae5df7b71 100644 --- a/cmd/part.c +++ b/cmd/part.c @@ -182,6 +182,26 @@ static int do_part_number(int argc, char * const argv[]) return do_part_info(argc, argv, CMD_PART_INFO_NUMBER); } +static int do_part_types(int argc, char * const argv[]) +{ + struct part_driver *drv = ll_entry_start(struct part_driver, + part_driver); + const int n_ents = ll_entry_count(struct part_driver, part_driver); + struct part_driver *entry; + int i = 0; + + puts("Supported partition tables"); + + for (entry = drv; entry != drv + n_ents; entry++) { + printf("%c %s", i ? ',' : ':', entry->name); + i++; + } + if (!i) + puts(": "); + puts("\n"); + return CMD_RET_SUCCESS; +} + static int do_part(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { if (argc < 2) @@ -197,7 +217,8 @@ static int do_part(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return do_part_size(argc - 2, argv + 2); else if (!strcmp(argv[1], "number")) return do_part_number(argc - 2, argv + 2); - + else if (!strcmp(argv[1], "types")) + return do_part_types(argc - 2, argv + 2); return CMD_RET_USAGE; } @@ -221,5 +242,7 @@ U_BOOT_CMD( " part can be either partition number or partition name\n" "part number \n" " - set environment variable to the partition number using the partition name\n" - " part must be specified as partition name" + " part must be specified as partition name\n" + "part types\n" + " - list supported partition table types" ); diff --git a/test/py/tests/test_part.py b/test/py/tests/test_part.py new file mode 100644 index 0000000000..cba9804510 --- /dev/null +++ b/test/py/tests/test_part.py @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2020 +# Niel Fourie, DENX Software Engineering, lusus at denx.de + +import pytest + + at pytest.mark.buildconfigspec('cmd_part') + at pytest.mark.buildconfigspec('partitions') + at pytest.mark.buildconfigspec('efi_partition') +def test_dm_compat(u_boot_console): + """Test that `part types` prints a result which includes `EFI`.""" + output = u_boot_console.run_command('part types') + assert "Supported partition tables:" in output + assert "EFI" in output