From: Wei Gao via ltp <ltp@lists.linux.it>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v4 3/3] tst_run_shell.c: Add new function handle new needs_cmds
Date: Fri, 17 Oct 2025 10:09:58 +0000 [thread overview]
Message-ID: <20251017101011.3811-4-wegao@suse.com> (raw)
In-Reply-To: <20251017101011.3811-1-wegao@suse.com>
Signed-off-by: Wei Gao <wegao@suse.com>
---
testcases/lib/tst_run_shell.c | 61 ++++++++++++++++++++++++++++++++++-
1 file changed, 60 insertions(+), 1 deletion(-)
diff --git a/testcases/lib/tst_run_shell.c b/testcases/lib/tst_run_shell.c
index 7a446e004..a6e0d1d29 100644
--- a/testcases/lib/tst_run_shell.c
+++ b/testcases/lib/tst_run_shell.c
@@ -175,6 +175,23 @@ static ujson_obj fs_obj = {
.attr_cnt = UJSON_ARRAY_SIZE(fs_attrs),
};
+enum cmd_ids {
+ CMD,
+ OPTIONAL,
+ PRESENT,
+};
+
+static ujson_obj_attr cmd_attrs[] = {
+ UJSON_OBJ_ATTR_IDX(CMD, "cmd", UJSON_STR),
+ UJSON_OBJ_ATTR_IDX(OPTIONAL, "optional", UJSON_INT),
+ UJSON_OBJ_ATTR_IDX(PRESENT, "present", UJSON_INT),
+};
+
+static ujson_obj cmd_obj = {
+ .attrs = cmd_attrs,
+ .attr_cnt = UJSON_ARRAY_SIZE(cmd_attrs),
+};
+
static int parse_mnt_flags(ujson_reader *reader, ujson_val *val)
{
int ret = 0;
@@ -252,6 +269,48 @@ static struct tst_fs *parse_filesystems(ujson_reader *reader, ujson_val *val)
return ret;
}
+static struct tst_cmd *parse_cmds(ujson_reader *reader, ujson_val *val)
+{
+ unsigned int i = 0, cnt = 0;
+ struct tst_cmd *ret;
+
+ ujson_reader_state state = ujson_reader_state_save(reader);
+
+ UJSON_ARR_FOREACH(reader, val) {
+ if (val->type != UJSON_ARR) {
+ ujson_err(reader, "Expected array!");
+ return NULL;
+ }
+ ujson_arr_skip(reader);
+ cnt++;
+ }
+
+ ujson_reader_state_load(reader, state);
+
+ ret = SAFE_MALLOC(sizeof(struct tst_cmd) * (cnt + 1));
+ memset(&ret[cnt], 0, sizeof(ret[cnt]));
+
+ UJSON_ARR_FOREACH(reader, val) {
+ UJSON_OBJ_FOREACH_FILTER(reader, val, &cmd_obj, ujson_empty_obj) {
+ switch ((enum cmd_ids)val->idx) {
+ case CMD:
+ ret[i].cmd = strdup(val->val_str);
+ break;
+ case OPTIONAL:
+ ret[i].optional = val->val_int;
+ break;
+ case MKFS_VER:
+ ret[i].present = val->val_int;
+ break;
+ }
+ }
+
+ i++;
+ }
+
+ return ret;
+}
+
static struct tst_tag *parse_tags(ujson_reader *reader, ujson_val *val)
{
unsigned int i = 0, cnt = 0;
@@ -440,7 +499,7 @@ static void parse_metadata(void)
ujson_err(&reader, "ABI bits must be 32 or 64");
break;
case NEEDS_CMDS:
- test.needs_cmds = parse_strarr(&reader, &val);
+ test.needs_cmds = parse_cmds(&reader, &val);
break;
case NEEDS_DEVFS:
test.needs_devfs = val.val_bool;
--
2.51.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2025-10-17 10:11 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-26 8:50 [LTP] [PATCH v1 0/2] new cmd support option for needs_cmds Wei Gao via ltp
2025-09-26 8:50 ` [LTP] [PATCH v1 1/2] lib: Add support option for .needs_cmds Wei Gao via ltp
2025-09-26 9:31 ` Cyril Hrubis
2025-09-26 8:50 ` [LTP] [PATCH v1 2/2] ioctl_loop01.c: Update to new .needs_cmds struct Wei Gao via ltp
2025-09-26 9:32 ` Cyril Hrubis
2025-09-28 23:26 ` [LTP] [PATCH v1 0/2] new cmd support option for needs_cmds Wei Gao via ltp
2025-09-28 23:26 ` [LTP] [PATCH v2 1/2] lib: Add support option for .needs_cmds Wei Gao via ltp
2025-09-30 13:36 ` Petr Vorel
2025-10-10 6:32 ` Wei Gao via ltp
2025-10-10 6:45 ` [LTP] [PATCH v3 0/4] new cmd support option for needs_cmds Wei Gao via ltp
2025-10-10 6:45 ` [LTP] [PATCH v3 1/4] lib: Add support option for .needs_cmds Wei Gao via ltp
2025-10-10 9:13 ` Petr Vorel
2025-10-10 9:45 ` Petr Vorel
2025-10-10 6:45 ` [LTP] [PATCH v3 2/4] ioctl_loop01.c: Update to new .needs_cmds struct Wei Gao via ltp
2025-10-10 6:45 ` [LTP] [PATCH v3 3/4] Update test cases use new needs_cmds Wei Gao via ltp
2025-10-10 6:45 ` [LTP] [PATCH v3 4/4] tst_run_shell.c: Add new function handle " Wei Gao via ltp
2025-10-17 10:09 ` [LTP] [PATCH v4 0/3] new cmd support option for needs_cmds Wei Gao via ltp
2025-10-17 10:09 ` [LTP] [PATCH v4 1/3] lib: Add support option for .needs_cmds Wei Gao via ltp
2025-10-17 14:35 ` Petr Vorel
2025-10-20 1:22 ` Wei Gao via ltp
2025-10-20 13:21 ` Petr Vorel
2025-10-21 3:42 ` Wei Gao via ltp
2025-10-22 9:23 ` Li Wang via ltp
2025-10-22 14:19 ` Wei Gao via ltp
2025-10-17 15:37 ` Petr Vorel
2025-10-20 1:24 ` Wei Gao via ltp
2025-10-20 13:33 ` Petr Vorel
2025-10-21 3:17 ` Wei Gao via ltp
2025-10-17 10:09 ` [LTP] [PATCH v4 2/3] Update test cases use new needs_cmds Wei Gao via ltp
2025-10-17 10:09 ` Wei Gao via ltp [this message]
2025-10-17 15:30 ` [LTP] [PATCH v4 3/3] tst_run_shell.c: Add new function handle " Petr Vorel
2025-10-17 15:41 ` Petr Vorel
2025-10-20 1:41 ` Wei Gao via ltp
2025-11-07 0:30 ` [LTP] [PATCH v4 0/4] new cmd support option for needs_cmds Wei Gao via ltp
2025-11-07 0:30 ` [LTP] [PATCH v4 1/4] tst_cmd.c: Check brk_nosupp when tst_get_path failed Wei Gao via ltp
2025-11-07 10:33 ` Petr Vorel
2025-11-07 0:30 ` [LTP] [PATCH v4 2/4] lib: Add support option for .needs_cmds Wei Gao via ltp
2025-11-07 0:30 ` [LTP] [PATCH v4 3/4] ioctl_loop01.c: Add new support .needs_cmds Wei Gao via ltp
2025-11-07 11:04 ` Petr Vorel
2025-11-08 12:58 ` Wei Gao via ltp
2025-11-07 0:30 ` [LTP] [PATCH v4 4/4] shell_loader_cmd.sh: New test case check needs_cmds Wei Gao via ltp
2025-11-07 11:41 ` Petr Vorel
2025-11-10 2:47 ` [LTP] [PATCH v5 0/3] new cmd support option for needs_cmds Wei Gao via ltp
2025-11-10 2:47 ` [LTP] [PATCH v5 1/3] lib: Add support option for .needs_cmds Wei Gao via ltp
2025-11-11 11:06 ` Petr Vorel
2025-12-12 10:30 ` Cyril Hrubis
2025-12-12 11:16 ` Petr Vorel
2025-12-15 7:33 ` Wei Gao via ltp
2025-12-15 9:36 ` Petr Vorel
2025-12-15 10:59 ` Wei Gao via ltp
2025-12-17 13:18 ` Petr Vorel
2026-01-07 8:05 ` Petr Vorel
2025-11-10 2:47 ` [LTP] [PATCH v5 2/3] ioctl_loop01.c: Add new support .needs_cmds Wei Gao via ltp
2025-11-11 11:14 ` Petr Vorel
2025-11-10 2:47 ` [LTP] [PATCH v5 3/3] shell_loader_cmd.sh: New test case check needs_cmds Wei Gao via ltp
2025-11-11 10:41 ` Wei Gao via ltp
2025-11-11 11:15 ` Petr Vorel
2025-12-23 2:08 ` [LTP] [PATCH v6 0/4] new cmd support option for needs_cmds Wei Gao via ltp
2025-12-23 2:08 ` [LTP] [PATCH v6 1/4] lib: Add support option for .needs_cmds Wei Gao via ltp
2026-01-05 13:48 ` Petr Vorel
2026-01-06 10:01 ` Cyril Hrubis
2025-12-23 2:08 ` [LTP] [PATCH v6 2/4] tst_test.c: Add tst_cmd_present check if a command is present Wei Gao via ltp
2026-01-05 13:52 ` Petr Vorel
2026-01-06 10:02 ` Cyril Hrubis
2026-01-07 6:16 ` Wei Gao via ltp
2026-01-07 8:09 ` Petr Vorel
2026-01-07 8:27 ` Petr Vorel
2026-01-07 9:59 ` Cyril Hrubis
2026-01-09 6:11 ` Wei Gao via ltp
2026-01-12 11:05 ` Petr Vorel
2026-01-07 9:56 ` Cyril Hrubis
2025-12-23 2:08 ` [LTP] [PATCH v6 3/4] ioctl_loop01.c: Add new support .needs_cmds Wei Gao via ltp
2026-01-05 13:56 ` Petr Vorel
2025-12-23 2:08 ` [LTP] [PATCH v6 4/4] shell_loader_cmd.sh: New test case check needs_cmds Wei Gao via ltp
2026-01-05 13:57 ` Petr Vorel
2026-01-09 6:16 ` [LTP] [PATCH v7 0/4] new cmd support option for needs_cmds Wei Gao via ltp
2026-01-09 6:16 ` [LTP] [PATCH v7 1/4] lib: Add support option for .needs_cmds Wei Gao via ltp
2026-01-09 19:15 ` Petr Vorel
2026-01-09 19:21 ` Petr Vorel
2026-01-16 14:03 ` Li Wang via ltp
2026-01-19 14:51 ` Cyril Hrubis
2026-01-20 6:42 ` Petr Vorel
2026-01-09 6:16 ` [LTP] [PATCH v7 2/4] tst_test.c: Add tst_cmd_present check if a command is present Wei Gao via ltp
2026-01-09 19:17 ` Petr Vorel
2026-01-12 11:08 ` Petr Vorel
2026-01-16 13:58 ` Li Wang via ltp
2026-01-19 13:17 ` Cyril Hrubis
2026-01-09 6:16 ` [LTP] [PATCH v7 3/4] ioctl_loop01.c: Add new support .needs_cmds Wei Gao via ltp
2026-01-16 13:25 ` Li Wang via ltp
2026-01-17 13:16 ` Wei Gao via ltp
2026-01-19 3:00 ` Li Wang via ltp
2026-01-19 5:34 ` Wei Gao via ltp
2026-01-19 6:27 ` Li Wang via ltp
2026-01-19 14:57 ` Cyril Hrubis
2026-01-21 13:08 ` Cyril Hrubis
2026-01-09 6:16 ` [LTP] [PATCH v7 4/4] shell_loader_cmd.sh: New test case check needs_cmds Wei Gao via ltp
2026-01-21 13:09 ` Cyril Hrubis
2026-01-21 13:11 ` Petr Vorel
2025-09-28 23:26 ` [LTP] [PATCH v2 2/2] ioctl_loop01.c: Update to new .needs_cmds struct Wei Gao via ltp
2025-09-30 13:12 ` Petr Vorel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251017101011.3811-4-wegao@suse.com \
--to=ltp@lists.linux.it \
--cc=wegao@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox