test: cmd: add test for spawn and wait commands
authorJerome Forissier <jerome.forissier@linaro.org>
Fri, 18 Apr 2025 14:09:43 +0000 (16:09 +0200)
committerTom Rini <trini@konsulko.com>
Wed, 23 Apr 2025 19:19:44 +0000 (13:19 -0600)
Test the spawn and wait commands.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
test/cmd/Makefile
test/cmd/spawn.c [new file with mode: 0644]

index 8596c5a..595e4cf 100644 (file)
@@ -39,3 +39,4 @@ obj-$(CONFIG_CMD_WGET) += wget.o
 endif
 obj-$(CONFIG_ARM_FFA_TRANSPORT) += armffa.o
 endif
+obj-$(CONFIG_CMD_SPAWN) += spawn.o
diff --git a/test/cmd/spawn.c b/test/cmd/spawn.c
new file mode 100644 (file)
index 0000000..8f48f5e
--- /dev/null
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Tests for spawn and wait commands
+ *
+ * Copyright 2025, Linaro Ltd.
+ */
+
+#include <command.h>
+#include <test/cmd.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+static int test_cmd_spawn(struct unit_test_state *uts)
+{
+       ut_assertok(run_command("wait; spawn sleep 2; setenv j ${job_id}; "
+                               "spawn setenv spawned true; "
+                               "setenv jj ${job_id}; wait; "
+                               "echo ${j} ${jj} ${spawned}", 0));
+       console_record_readline(uts->actual_str, sizeof(uts->actual_str));
+       ut_asserteq_ptr(uts->actual_str,
+                       strstr(uts->actual_str, "1 2 true"));
+
+       ut_assertok(run_command("spawn true; wait; setenv t $?; spawn false; "
+                               "wait; setenv f $?; wait; echo $t $f $?", 0));
+       console_record_readline(uts->actual_str, sizeof(uts->actual_str));
+       ut_asserteq_ptr(uts->actual_str,
+                       strstr(uts->actual_str, "0 1 0"));
+       ut_assert_console_end();
+
+       return 0;
+}
+CMD_TEST(test_cmd_spawn, UTF_CONSOLE);