This is an automated email from the ASF dual-hosted git repository.

pnoltes pushed a commit to branch feature/674-improve-properties
in repository https://gitbox.apache.org/repos/asf/celix.git

commit f41a0f6ed12c91a16ef473facfa0d20b73998bcf
Author: Pepijn Noltes <[email protected]>
AuthorDate: Sun Jan 7 16:07:55 2024 +0100

    Fix convert utils ei tests
---
 libs/utils/gtest/src/ConvertUtilsErrorInjectionTestSuite.cc | 11 ++++++-----
 libs/utils/include/celix_convert_utils.h                    |  7 ++++++-
 libs/utils/src/celix_convert_utils.c                        |  6 ++++--
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/libs/utils/gtest/src/ConvertUtilsErrorInjectionTestSuite.cc 
b/libs/utils/gtest/src/ConvertUtilsErrorInjectionTestSuite.cc
index d1f4d07b..ecd160f5 100644
--- a/libs/utils/gtest/src/ConvertUtilsErrorInjectionTestSuite.cc
+++ b/libs/utils/gtest/src/ConvertUtilsErrorInjectionTestSuite.cc
@@ -30,7 +30,7 @@ public:
     ~ConvertUtilsWithErrorInjectionTestSuite() override {
         celix_ei_expect_celix_version_copy(nullptr, 0, nullptr);
         celix_ei_expect_celix_version_createVersionFromString(nullptr, 0, 
CELIX_SUCCESS);
-        celix_ei_expect_celix_arrayList_create(nullptr, 0, nullptr);
+        celix_ei_expect_celix_arrayList_createWithOptions(nullptr, 0, nullptr);
         celix_ei_expect_celix_arrayList_addLong(nullptr, 0, CELIX_SUCCESS);
         celix_ei_expect_open_memstream(nullptr, 0, nullptr);
         celix_ei_expect_fputs(nullptr, 0, 0);
@@ -66,15 +66,16 @@ TEST_F(ConvertUtilsWithErrorInjectionTestSuite, 
ConvertToVersionTest) {
 
 TEST_F(ConvertUtilsWithErrorInjectionTestSuite, ConvertToLongArrayTest) {
     //Given an error injection for celix_arrayList_create
-    
celix_ei_expect_celix_arrayList_create((void*)celix_utils_convertStringToLongArrayList,
 0, nullptr);
+    
celix_ei_expect_celix_arrayList_createWithOptions((void*)celix_utils_convertStringToLongArrayList,
 1, nullptr);
     //When calling celix_utils_convertStringToLongArrayList
     celix_array_list_t* result;
     celix_status_t status = celix_utils_convertStringToLongArrayList("1,2,3", 
nullptr, &result);
     //Then the result is null and the status is ENOMEM
     EXPECT_EQ(status, CELIX_ENOMEM);
+    EXPECT_EQ(nullptr, result);
 
     //Given an error injection for celix_arrayList_addLong
-    
celix_ei_expect_celix_arrayList_addLong((void*)celix_utils_convertStringToLongArrayList,
 0, CELIX_ENOMEM);
+    
celix_ei_expect_celix_arrayList_addLong((void*)celix_utils_convertStringToLongArrayList,
 2, CELIX_ENOMEM);
     //When calling celix_utils_convertStringToLongArrayList
     status = celix_utils_convertStringToLongArrayList("1,2,3", nullptr, 
&result);
     //Then the result is null and the status is ENOMEM
@@ -83,14 +84,14 @@ TEST_F(ConvertUtilsWithErrorInjectionTestSuite, 
ConvertToLongArrayTest) {
     celix_autoptr(celix_array_list_t) defaultList = celix_arrayList_create();
 
     //Given an error injection for celix_arrayList_copy
-    
celix_ei_expect_celix_arrayList_copy((void*)celix_utils_convertStringToLongArrayList,
 0, nullptr);
+    
celix_ei_expect_celix_arrayList_copy((void*)celix_utils_convertStringToLongArrayList,
 1, nullptr);
     //When calling celix_utils_convertStringToLongArrayList with a nullptr as 
value
     status = celix_utils_convertStringToLongArrayList(nullptr, defaultList, 
&result);
     //Then the result is null and the status is ENOMEM
     EXPECT_EQ(status, CELIX_ENOMEM);
 
     //Given an error injection for celix_arrayList_copy
-    
celix_ei_expect_celix_arrayList_copy((void*)celix_utils_convertStringToLongArrayList,
 0, nullptr);
+    
celix_ei_expect_celix_arrayList_copy((void*)celix_utils_convertStringToLongArrayList,
 1, nullptr);
     //When calling celix_utils_convertStringToLongArrayList with an invalid 
value
     status = celix_utils_convertStringToLongArrayList("invalid", defaultList, 
&result);
     //Then the result is null and the status is ENOMEM
diff --git a/libs/utils/include/celix_convert_utils.h 
b/libs/utils/include/celix_convert_utils.h
index 8fc73f6e..d5fa6e23 100644
--- a/libs/utils/include/celix_convert_utils.h
+++ b/libs/utils/include/celix_convert_utils.h
@@ -170,6 +170,9 @@ char* celix_utils_boolArrayListToString(const 
celix_array_list_t* list);
  *
  * @param[in] val The string to convert.
  * @param[in] defaultValue The default value if the string is not a valid "," 
separated list of strings.
+ *                         Note that the defaultValue is copied if the string 
is not a valid list of string entries
+ *                         and the defaultValue is expected to be configured 
with a removed entry callback so the
+ * strings are freed.
  * @param[out] list The converted list. If the string is not a valid list, the 
list will be set to a copy of the
  * defaultValue.
  */
@@ -196,7 +199,9 @@ char* celix_utils_stringArrayListToString(const 
celix_array_list_t* list);
  *
  * @param[in] val The string to convert.
  * @param[in] defaultValue The default value if the string is not a valid "," 
separated list of string parseable to
- *                         celix_version_t entries.
+ *                         celix_version_t entries. Note that the defaultValue 
is copied if the string is not a valid
+ *                         list of version entries and the defaultValue
+ *                         is expected to be configured with a removed entry 
callback so the versions are freed.
  * @param[out] list The converted list. If the string is not a valid list, the 
list will be set to a copy of the
  * defaultValue.
  */
diff --git a/libs/utils/src/celix_convert_utils.c 
b/libs/utils/src/celix_convert_utils.c
index eb3eb5c4..b3484444 100644
--- a/libs/utils/src/celix_convert_utils.c
+++ b/libs/utils/src/celix_convert_utils.c
@@ -278,7 +278,7 @@ static char* celix_utils_arrayListToString(const 
celix_array_list_t* list,
                                            int (*printCb)(FILE* stream, const 
celix_array_list_entry_t* entry)) {
     char* result = NULL;
     size_t len;
-    celix_autoptr(FILE) stream = open_memstream(&result, &len);
+    FILE* stream = open_memstream(&result, &len);
     if (!stream) {
         celix_err_push("Cannot open memstream");
         return NULL;
@@ -293,10 +293,12 @@ static char* celix_utils_arrayListToString(const 
celix_array_list_t* list,
         }
         if (rc < 0) {
             celix_err_push("Cannot print to stream");
+            fclose(stream);
+            free(result);
             return NULL;
         }
     }
-    fclose(celix_steal_ptr(stream));
+    fclose(stream);
     return result;
 }
 

Reply via email to