Modifies the command run for hush 2021 when using string comparison operator. Indeed, '<' and '>' must be escaped to be used as these operators.
Signed-off-by: Francis Laniel <francis.lan...@amarulasolutions.com> --- test/hush/if.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/test/hush/if.c b/test/hush/if.c index a57d88850f..f4aebc58b3 100644 --- a/test/hush/if.c +++ b/test/hush/if.c @@ -9,6 +9,7 @@ #include <env_attr.h> #include <test/hush.h> #include <test/ut.h> +#include <asm/global_data.h> /* * All tests will execute the following: @@ -35,10 +36,15 @@ static int hush_test_if_base(struct unit_test_state *uts) } HUSH_TEST(hush_test_if_base, 0); +DECLARE_GLOBAL_DATA_PTR; + static int hush_test_if_basic_operators(struct unit_test_state *uts) { char if_formatted[128]; + if (gd->flags & GD_FLG_HUSH_2021_PARSER) + console_record_reset_enable(); + sprintf(if_formatted, if_format, "test aaa = aaa"); ut_assertok(run_command(if_formatted, 0)); @@ -52,15 +58,54 @@ static int hush_test_if_basic_operators(struct unit_test_state *uts) ut_asserteq(1, run_command(if_formatted, 0)); sprintf(if_formatted, if_format, "test aaa < bbb"); + if (gd->flags & GD_FLG_HUSH_2021_PARSER) { + /* + * We need to escape < and > to use as them as string comparison + * operator. + * Otherwise, they are interpreted as redirection operators + * which is not supported in U-Boot. + */ + ut_asserteq(1, run_command(if_formatted, 0)); + /* Next lines contains error message (which is on two lines). */ + ut_assert_skipline(); + ut_assert_skipline(); + ut_assert_console_end(); + + sprintf(if_formatted, if_format, "test aaa \\< bbb"); + } ut_assertok(run_command(if_formatted, 0)); sprintf(if_formatted, if_format, "test bbb < aaa"); + if (gd->flags & GD_FLG_HUSH_2021_PARSER) { + ut_asserteq(1, run_command(if_formatted, 0)); + ut_assert_skipline(); + ut_assert_skipline(); + ut_assert_console_end(); + + sprintf(if_formatted, if_format, "test bbb \\< aaa"); + } ut_asserteq(1, run_command(if_formatted, 0)); sprintf(if_formatted, if_format, "test bbb > aaa"); + if (gd->flags & GD_FLG_HUSH_2021_PARSER) { + ut_asserteq(1, run_command(if_formatted, 0)); + ut_assert_skipline(); + ut_assert_skipline(); + ut_assert_console_end(); + + sprintf(if_formatted, if_format, "test bbb \\> aaa"); + } ut_assertok(run_command(if_formatted, 0)); sprintf(if_formatted, if_format, "test aaa > bbb"); + if (gd->flags & GD_FLG_HUSH_2021_PARSER) { + ut_asserteq(1, run_command(if_formatted, 0)); + ut_assert_skipline(); + ut_assert_skipline(); + ut_assert_console_end(); + + sprintf(if_formatted, if_format, "test aaa \\> bbb"); + } ut_asserteq(1, run_command(if_formatted, 0)); sprintf(if_formatted, if_format, "test 123 -eq 123"); -- 2.25.1