diff options
author | Tom Rini <trini@konsulko.com> | 2021-01-25 09:02:06 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2021-01-25 09:02:06 -0500 |
commit | 7f10b8eed450fcac6296ef53432d3b30c407cc39 (patch) | |
tree | d0d4cf17cc9200a360d733c487287dcf73da67a7 /test/cmd/test_echo.c | |
parent | aee5bcce35009c50555d9917e2ca4b9422210fbb (diff) | |
parent | 5b6dac01e636aa8b799a68c115d9fd86e4bbbf09 (diff) |
Merge tag 'doc-2021-04-rc1-2' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
Pull request for documentation tag doc-2021-04-rc1 (2)
* Man-pages for sbi, exit, for, echo, loady, true, false, conitrace
* Adjust suppression of newline in echo command.
* Provide unit test for echo command.
Diffstat (limited to 'test/cmd/test_echo.c')
-rw-r--r-- | test/cmd/test_echo.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/test/cmd/test_echo.c b/test/cmd/test_echo.c new file mode 100644 index 00000000000..4183cf75bb6 --- /dev/null +++ b/test/cmd/test_echo.c @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Tests for echo command + * + * Copyright 2020, Heinrich Schuchadt <xypron.glpk@gmx.de> + */ + +#include <common.h> +#include <command.h> +#include <display_options.h> +#include <test/lib.h> +#include <test/test.h> +#include <test/ut.h> + +DECLARE_GLOBAL_DATA_PTR; + +struct test_data { + char *cmd; + char *expected; +}; + +static struct test_data echo_data[] = { + {"echo 1 2 3", + "1 2 3"}, + /* Test new line handling */ + {"echo -n 1 2 3; echo a b c", + "1 2 3a b c"}, + /* + * Test handling of environment variables. + * + * j, q, x are among the least frequent letters in English. + * Hence no collision for the variable name jQx is expected. + */ + {"setenv jQx X; echo \"a)\" ${jQx} 'b)' '${jQx}' c) ${jQx}; setenv jQx", + "a) X b) ${jQx} c) X"}, + /* Test handling of shell variables. */ + {"setenv jQx; for jQx in 1 2 3; do echo -n \"${jQx}, \"; done; echo;", + "1, 2, 3, "}, +}; + +static int lib_test_hush_echo(struct unit_test_state *uts) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(echo_data); ++i) { + console_record_reset_enable(); + ut_assertok(run_command(echo_data[i].cmd, 0)); + gd->flags &= ~GD_FLG_RECORD; + console_record_readline(uts->actual_str, + sizeof(uts->actual_str)); + ut_asserteq_str(echo_data[i].expected, uts->actual_str); + ut_assertok(ut_check_console_end(uts)); + } + return 0; +} + +LIB_TEST(lib_test_hush_echo, 0); |