From: Olivier Matz Date: Fri, 27 Mar 2020 08:09:53 +0000 (+0100) Subject: test/kvargs: fix to consider empty elements as valid X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=commitdiff_plain;h=55fa01f7edfc9d2fa5af57ffb8991750fbdb1528 test/kvargs: fix to consider empty elements as valid Empty elements passed to the kvargs parser are silently ignored. Examples of valid strings: "" "," ",,,,,,key=val,,,," Fix the unit tests to conform to this behavior. Note: the test_invalid_kvargs() function is currently broken, which explain why the tests were not failing. It is fixed in the next commit. Fixes: e495f5435524 ("kvargs: add test case in app/test") Cc: stable@dpdk.org Signed-off-by: Olivier Matz Reviewed-by: David Marchand --- diff --git a/app/test/test_kvargs.c b/app/test/test_kvargs.c index a42056f361..d3db88a57a 100644 --- a/app/test/test_kvargs.c +++ b/app/test/test_kvargs.c @@ -142,7 +142,7 @@ static int test_valid_kvargs(void) valid_keys = valid_keys_list; kvlist = rte_kvargs_parse(args, valid_keys); if (kvlist == NULL) { - printf("rte_kvargs_parse() error"); + printf("rte_kvargs_parse() error\n"); goto fail; } if (strcmp(kvlist->pairs[0].value, "[0,1]") != 0) { @@ -157,6 +157,40 @@ static int test_valid_kvargs(void) } rte_kvargs_free(kvlist); + /* test using empty string (it is valid) */ + args = ""; + kvlist = rte_kvargs_parse(args, NULL); + if (kvlist == NULL) { + printf("rte_kvargs_parse() error\n"); + goto fail; + } + if (rte_kvargs_count(kvlist, NULL) != 0) { + printf("invalid count value\n"); + goto fail; + } + rte_kvargs_free(kvlist); + + /* test using empty elements (it is valid) */ + args = "foo=1,,check=value2,,"; + kvlist = rte_kvargs_parse(args, NULL); + if (kvlist == NULL) { + printf("rte_kvargs_parse() error\n"); + goto fail; + } + if (rte_kvargs_count(kvlist, NULL) != 2) { + printf("invalid count value\n"); + goto fail; + } + if (rte_kvargs_count(kvlist, "foo") != 1) { + printf("invalid count value for 'foo'\n"); + goto fail; + } + if (rte_kvargs_count(kvlist, "check") != 1) { + printf("invalid count value for 'check'\n"); + goto fail; + } + rte_kvargs_free(kvlist); + return 0; fail: @@ -179,7 +213,6 @@ static int test_invalid_kvargs(void) const char *args_list[] = { "wrong-key=x", /* key not in valid_keys_list */ "foo=1,foo=", /* empty value */ - "foo=1,,foo=2", /* empty key/value */ "foo=1,foo", /* no value */ "foo=1,=2", /* no key */ "foo=[1,2", /* no closing bracket in value */