Loading...
// 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);