summaryrefslogtreecommitdiff
path: root/test/cmd/setexpr.c
diff options
context:
space:
mode:
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2025-02-03 16:10:29 +0100
committerTom Rini <trini@konsulko.com>2025-02-07 13:35:23 -0600
commitaf7eca24a78b1419656d618463f1eabe297fdb2f (patch)
tree7b12ea285a455fdbd417c1fa1aea062a65fde2f4 /test/cmd/setexpr.c
parentd4265cdcd57c1975d4e756ab1778c837acc9776c (diff)
cmd/setexpr: support concatenation of direct strings
The setexpr.s command allows to concatenate two strings. According to the description in doc/usage/cmd/setexpr.rst the parameters value1 and value2 can be either direct values or pointers to a memory location holding the values. Unfortunately `setexpr.s <value1> + <value2>` fails if any of the values is a direct value. $? is set to false. * Add support for direct values in setexpr.s. * Correct the unit test for "setexpr.s fred 0". * Add a new unit test for "setexpr.s fred '1' + '3'" giving '13'. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Diffstat (limited to 'test/cmd/setexpr.c')
-rw-r--r--test/cmd/setexpr.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/test/cmd/setexpr.c b/test/cmd/setexpr.c
index 650fbc8ebee..5e9b577fe36 100644
--- a/test/cmd/setexpr.c
+++ b/test/cmd/setexpr.c
@@ -303,7 +303,8 @@ static int setexpr_test_str(struct unit_test_state *uts)
memset(buf, '\xff', BUF_SIZE);
ut_assertok(env_set("fred", "x"));
- ut_asserteq(1, run_command("setexpr.s fred 0", 0));
+ ut_asserteq(0, run_command("setexpr.s fred 0", 0));
+ ut_asserteq_str("0", env_get("fred"));
strcpy(buf, "hello");
ut_assertok(env_set("fred", "12345"));
@@ -321,6 +322,10 @@ static int setexpr_test_str_oper(struct unit_test_state *uts)
{
char *buf;
+ /* Test concatenation of strings */
+ ut_assertok(run_command("setexpr.s fred '1' + '3'", 0));
+ ut_asserteq_str("13", env_get("fred"));
+
buf = map_sysmem(0, BUF_SIZE);
memset(buf, '\xff', BUF_SIZE);
strcpy(buf, "hello");