From 08279ab9f6c2e9ac393e1481cb82919f31a053b8 Mon Sep 17 00:00:00 2001 From: Bartosz Podrygajlo Date: Mon, 2 Dec 2024 15:26:39 +0100 Subject: [PATCH] Align return value of config_yaml_get to libconfig implementation Now return value should be equal to number of processed input parameters like in params_libconfig. --- common/config/yaml/config_yaml.cpp | 2 +- common/config/yaml/tests/test_yaml_config.cpp | 36 ++++++++++++------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/common/config/yaml/config_yaml.cpp b/common/config/yaml/config_yaml.cpp index 419b187ef9..eb510c94f5 100644 --- a/common/config/yaml/config_yaml.cpp +++ b/common/config/yaml/config_yaml.cpp @@ -265,7 +265,7 @@ extern "C" int config_yaml_get(configmodule_interface_t *cfg, paramdef_t *cfgopt } } config_yaml::GetParams(cfg, node, cfgoptions, numoptions); - return 0; + return numoptions; } extern "C" int config_yaml_getlist(configmodule_interface_t *cfg, diff --git a/common/config/yaml/tests/test_yaml_config.cpp b/common/config/yaml/tests/test_yaml_config.cpp index 1cc260ffb7..deaa52cd1a 100644 --- a/common/config/yaml/tests/test_yaml_config.cpp +++ b/common/config/yaml/tests/test_yaml_config.cpp @@ -125,7 +125,7 @@ TEST(yaml_config, test_high_recusion) { p.type = TYPE_UINT16; p.u16ptr = &value; char prefix[] = "test.test1.test2.test3.test4"; - EXPECT_EQ(config_yaml_get(cfg, &p, 1, prefix), 0); + EXPECT_EQ(config_yaml_get(cfg, &p, 1, prefix), 1); EXPECT_EQ(value, i); } @@ -175,7 +175,7 @@ TEST(yaml_config, test_string_auto_alloc) { // Test automatic allocation of strings char prefix[] = "test"; - EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 0); + EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 1); EXPECT_NE(param.strptr, nullptr); EXPECT_EQ(strcmp(*param.strptr, "testvalue"), 0); EXPECT_EQ(cfg->numptrs, 2); @@ -200,7 +200,7 @@ TEST(yaml_config, test_string_no_realloc) { char prefix[] = "test"; char* non_null_pointer_to_pointer = nullptr; param.strptr = &non_null_pointer_to_pointer; - EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 0); + EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 1); EXPECT_EQ(param.strptr, &non_null_pointer_to_pointer); EXPECT_EQ(strcmp(*param.strptr, "testvalue"), 0); EXPECT_EQ(cfg->numptrs, 1); @@ -225,7 +225,7 @@ TEST(yaml_config, test_string_pointer_available) { char prefix[] = "test"; char *container = (char *)malloc(sizeof(char) * 30); param.strptr = &container; - EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 0); + EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 1); EXPECT_EQ(param.strptr, &container); EXPECT_EQ(strcmp(*param.strptr, "testvalue"), 0); EXPECT_EQ(cfg->numptrs, 0); @@ -253,7 +253,7 @@ TEST(yaml_config, test_string_default_value) { param.defstrval = default_value; param.strptr = nullptr; sprintf(param.optname, "%s", "stringvalue_missing"); - EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 0); + EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 1); EXPECT_NE(param.strptr, nullptr); EXPECT_EQ(strcmp(*param.strptr, "default"), 0); EXPECT_EQ(cfg->numptrs, 2) << " 2 pointers required, 1 for the string, one for the pointer-to string"; @@ -276,7 +276,7 @@ TEST(yaml_config, test_stringlist) { // Test automatic allocation of string lists char prefix[] = "test"; - EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 0); + EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 1); EXPECT_NE(param.strptr, nullptr); for (auto i = 0; i < param.numelt; i++) { std::cout << (param.strlistptr)[i] << std::endl; @@ -302,7 +302,7 @@ TEST(yaml_config, test_list_of_mappings) { // Test automatic allocation of string lists char prefix1[] = "test.list.[0]"; - EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix1), 0); + EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix1), 1); EXPECT_NE(param.strptr, nullptr); EXPECT_STREQ("value1", param.strlistptr[0]); EXPECT_STREQ("value2", param.strlistptr[1]); @@ -310,7 +310,7 @@ TEST(yaml_config, test_list_of_mappings) { char prefix2[] = "test.list.[1]"; param.strlistptr = nullptr; - EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix2), 0); + EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix2), 1); EXPECT_NE(param.strptr, nullptr); EXPECT_STREQ("value4", param.strlistptr[0]); EXPECT_STREQ("value5", param.strlistptr[1]); @@ -334,7 +334,7 @@ TEST(yaml_config, test_int_array) { // Test automatic allocation of int arrays char prefix[] = "test"; - EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 0); + EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 1); EXPECT_NE(param.iptr, nullptr); ASSERT_EQ(param.numelt, 4); EXPECT_EQ(1, param.iptr[0]); @@ -345,7 +345,7 @@ TEST(yaml_config, test_int_array) { param.uptr = nullptr; param.numelt = 0; sprintf(param.optname, "%s", "array2"); - EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 0); + EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 1); EXPECT_NE(param.uptr, nullptr); ASSERT_EQ(param.numelt, 3); EXPECT_EQ(1U, param.uptr[0]); @@ -355,7 +355,7 @@ TEST(yaml_config, test_int_array) { param.uptr = nullptr; param.numelt = 0; sprintf(param.optname, "%s", "non-existent-array"); - EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 0); + EXPECT_EQ(config_yaml_get(cfg, ¶m, 1, prefix), 1); EXPECT_EQ(param.uptr, nullptr); ASSERT_EQ(param.numelt, 0); @@ -368,14 +368,24 @@ TEST(yaml_config, test_read_mapping_as_list) { configmodule_interface_t *cfg = static_cast(calloc(1, sizeof(*cfg))); cfg->cfgP[0] = strdup("test_read_mapping_as_list.yaml"); EXPECT_EQ(config_yaml_init(cfg), 0); - + char cfgstring[] = "fhi_72"; paramlist_def_t pl = {0}; - strncpy(pl.listname, "fhi_72", sizeof(pl.listname) - 1); + strncpy(pl.listname, cfgstring, sizeof(pl.listname) - 1); config_yaml_getlist(cfg, &pl, NULL, 0, /* prefix */ NULL); EXPECT_NE(pl.numelt, 0); EXPECT_EQ(pl.numelt, 3); + paramdef_t params[4] = {0}; + for (auto i = 0U; i < sizeofArray(params); i++) { + sprintf(params[i].optname, "%s%d", "element_", i+1); + params[i].type = TYPE_STRING; + params[i].paramflags = PARAMFLAG_MANDATORY; + } + params[sizeofArray(params) - 1].paramflags = 0; + int ret = config_yaml_get(cfg, params, sizeofArray(params), cfgstring); + EXPECT_EQ(ret, 4); + config_yaml_end(cfg); free(cfg->cfgP[0]); end_configmodule(cfg);