Test the spawn and wait commands.

Signed-off-by: Jerome Forissier <jerome.foriss...@linaro.org>
---
 test/cmd/Makefile |  1 +
 test/cmd/spawn.c  | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)
 create mode 100644 test/cmd/spawn.c

diff --git a/test/cmd/Makefile b/test/cmd/Makefile
index d8a5e77402d..cf47f04851c 100644
--- a/test/cmd/Makefile
+++ b/test/cmd/Makefile
@@ -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
index 00000000000..8f48f5ee25c
--- /dev/null
+++ b/test/cmd/spawn.c
@@ -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);
-- 
2.43.0

Reply via email to