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

pengzheng pushed a commit to branch feature/error_injector_ergonomics
in repository https://gitbox.apache.org/repos/asf/celix.git


The following commit(s) were added to 
refs/heads/feature/error_injector_ergonomics by this push:
     new 85bc17e6 Use a separate utils_cut(code under test) library for unit 
test.
85bc17e6 is described below

commit 85bc17e66bc76b39466262dac9cbae6f02dabd73
Author: PengZheng <[email protected]>
AuthorDate: Fri May 5 19:06:36 2023 +0800

    Use a separate utils_cut(code under test) library for unit test.
---
 libs/framework/CMakeLists.txt       |  3 +-
 libs/utils/CMakeLists.txt           | 76 ++++++++++++++++++++-----------------
 libs/utils/gtest/CMakeLists.txt     |  6 +--
 libs/utils/src/array_list_private.h |  1 -
 libs/utils/src/hash_map_private.h   | 14 +++----
 5 files changed, 52 insertions(+), 48 deletions(-)

diff --git a/libs/framework/CMakeLists.txt b/libs/framework/CMakeLists.txt
index e6a727f1..555b3fe6 100644
--- a/libs/framework/CMakeLists.txt
+++ b/libs/framework/CMakeLists.txt
@@ -35,9 +35,10 @@ set(FRAMEWORK_SRC
         src/celix_bundle_state.c
         src/celix_framework_utils.c
         src/celix_module_private.h)
-add_library(framework SHARED ${FRAMEWORK_SRC})
 set(FRAMEWORK_DEPS libuuid::libuuid CURL::libcurl ZLIB::ZLIB ${CMAKE_DL_LIBS})
 
+add_library(framework SHARED ${FRAMEWORK_SRC})
+
 set_target_properties(framework
         PROPERTIES
         C_VISIBILITY_PRESET hidden
diff --git a/libs/utils/CMakeLists.txt b/libs/utils/CMakeLists.txt
index db500513..6c3e43cb 100644
--- a/libs/utils/CMakeLists.txt
+++ b/libs/utils/CMakeLists.txt
@@ -28,7 +28,7 @@ if (NOT OPEN_MEMSTREAM_EXISTS)
     install(DIRECTORY include/memstream/ DESTINATION 
${CMAKE_INSTALL_INCLUDEDIR}/celix/memstream COMPONENT framework)
 endif()
 
-add_library(utils_obj OBJECT
+set(UTILS_SRC
         src/array_list.c
         src/hash_map.c
         src/linked_list.c
@@ -45,51 +45,49 @@ add_library(utils_obj OBJECT
         src/celix_file_utils.c
         src/celix_convert_utils.c
         ${MEMSTREAM_SOURCES}
-)
+        )
+set(UTILS_PRIVATE_DEPS libzip::libzip)
+set(UTILS_PUBLIC_DEPS)
+
+add_library(utils SHARED ${UTILS_SRC})
+
+target_link_libraries(utils PRIVATE libzip::libzip)
+set_target_properties(utils
+        PROPERTIES
+        C_VISIBILITY_PRESET hidden
+        SOVERSION ${CELIX_MAJOR}
+        OUTPUT_NAME "celix_utils")
 
-target_link_libraries(utils_obj PRIVATE libzip::libzip)
-#Note visibility preset is also needed on OBJECT libraries, to work correctly
-set_target_properties(utils_obj PROPERTIES C_VISIBILITY_PRESET hidden)
 if (NOT OPEN_MEMSTREAM_EXISTS)
-    target_compile_definitions(utils_obj PUBLIC 
-DCELIX_UTILS_NO_MEMSTREAM_AVAILABLE)
+    target_compile_definitions(utils PUBLIC 
-DCELIX_UTILS_NO_MEMSTREAM_AVAILABLE)
 endif ()
 
 if (ANDROID)
-    target_compile_definitions(utils_obj PRIVATE -DUSE_FILE32API)
+    target_compile_definitions(utils PRIVATE -DUSE_FILE32API)
 endif ()
 
 if (NOT APPLE)
-    target_link_libraries(utils_obj PUBLIC -lrt)
+    set(UTILS_PUBLIC_DEPS ${UTILS_PUBLIC_DEPS} rt)
 endif ()
 
-target_include_directories(utils_obj PUBLIC
+target_include_directories(utils PUBLIC
         $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
         $<BUILD_INTERFACE:${MEMSTREAM_INCLUDE_DIR}>
-        $<INSTALL_INTERFACE:include/celix/utils>)
-target_include_directories(utils_obj PRIVATE src include_deprecated)
+        )
+target_include_directories(utils PRIVATE src include_deprecated)
 IF(UNIX AND NOT ANDROID)
-    target_link_libraries(utils_obj PRIVATE m pthread)
+    set(UTILS_PRIVATE_DEPS ${UTILS_PRIVATE_DEPS} m pthread)
 ELSEIF(ANDROID)
-    target_link_libraries(utils_obj PRIVATE m)
+    set(UTILS_PRIVATE_DEPS ${UTILS_PRIVATE_DEPS} m)
 ENDIF()
 
-add_library(utils SHARED)
-target_link_libraries(utils PUBLIC utils_obj)
+target_link_libraries(utils PUBLIC ${UTILS_PUBLIC_DEPS} PRIVATE 
${UTILS_PRIVATE_DEPS})
 generate_export_header(utils
         BASE_NAME "CELIX_UTILS"
         EXPORT_FILE_NAME 
"${CMAKE_BINARY_DIR}/celix/gen/includes/utils/celix_utils_export.h")
-target_include_directories(utils_obj PUBLIC 
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/celix/gen/includes/utils>)
-# We are building this library
-target_compile_definitions(utils_obj PRIVATE utils_EXPORTS)
+target_include_directories(utils PUBLIC 
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/celix/gen/includes/utils>)
 
-set_target_properties(utils
-        PROPERTIES
-        C_VISIBILITY_PRESET hidden
-        SOVERSION ${CELIX_MAJOR}
-        OUTPUT_NAME "celix_utils")
-
-# By omitting OBJECTS DESTINATION, object files will NOT be installed.
-install(TARGETS utils utils_obj EXPORT celix LIBRARY DESTINATION 
${CMAKE_INSTALL_LIBDIR} COMPONENT framework
+install(TARGETS utils EXPORT celix LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 
COMPONENT framework
         INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/celix/utils)
 install(DIRECTORY include/
         DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/celix/utils/
@@ -104,10 +102,18 @@ endif ()
 
 #Alias setup to match external usage
 add_library(Celix::utils ALIAS utils)
-add_library(Celix::utils_obj ALIAS utils_obj)
 
 
 if (ENABLE_TESTING)
+    add_library(utils_cut STATIC ${UTILS_SRC})
+    target_include_directories(utils_cut PUBLIC
+            ${CMAKE_CURRENT_LIST_DIR}/include
+            ${MEMSTREAM_INCLUDE_DIR}
+            ${CMAKE_BINARY_DIR}/celix/gen/includes/utils>
+            src include_deprecated
+            )
+    target_link_libraries(utils_cut PUBLIC ${UTILS_PUBLIC_DEPS} 
${UTILS_PRIVATE_DEPS})
+
     if (CELIX_CXX17) #utils tests are C++17
         add_subdirectory(gtest)
     endif()
@@ -121,37 +127,37 @@ if (ENABLE_TESTING)
 
         add_executable(hash_map_test private/test/hash_map_test.cpp)
         target_include_directories(hash_map_test PRIVATE include_deprecated)
-        target_link_libraries(hash_map_test Celix::utils CppUTest::CppUTest 
pthread)
+        target_link_libraries(hash_map_test utils_cut CppUTest::CppUTest 
pthread)
 
         add_executable(array_list_test private/test/array_list_test.cpp)
         target_include_directories(array_list_test PRIVATE include_deprecated)
-        target_link_libraries(array_list_test  Celix::utils CppUTest::CppUTest 
pthread)
+        target_link_libraries(array_list_test utils_cut CppUTest::CppUTest 
pthread)
 
         add_executable(celix_threads_test private/test/celix_threads_test.cpp)
         target_include_directories(celix_threads_test PRIVATE 
include_deprecated)
-        target_link_libraries(celix_threads_test Celix::utils 
CppUTest::CppUTest ${CppUTest_EXT_LIBRARIES} pthread)
+        target_link_libraries(celix_threads_test utils_cut CppUTest::CppUTest 
${CppUTest_EXT_LIBRARIES} pthread)
 
         add_executable(linked_list_test private/test/linked_list_test.cpp)
         target_include_directories(linked_list_test PRIVATE include_deprecated)
-        target_link_libraries(linked_list_test  Celix::utils 
CppUTest::CppUTest pthread)
+        target_link_libraries(linked_list_test utils_cut CppUTest::CppUTest 
pthread)
 
         add_executable(properties_test private/test/properties_test.cpp)
         target_include_directories(properties_test PRIVATE include_deprecated)
-        target_link_libraries(properties_test CppUTest::CppUTest 
CppUTest::CppUTestExt  Celix::utils pthread)
+        target_link_libraries(properties_test CppUTest::CppUTest 
CppUTest::CppUTestExt utils_cut pthread)
 
         add_executable(ip_utils_test private/test/ip_utils_test.cpp)
         target_include_directories(ip_utils_test PRIVATE include_deprecated)
-        target_link_libraries(ip_utils_test CppUTest::CppUTest  Celix::utils 
pthread)
+        target_link_libraries(ip_utils_test CppUTest::CppUTest  utils_cut 
pthread)
 
         add_executable(version_test private/test/version_test.cpp)
         target_include_directories(version_test PRIVATE include_deprecated)
-        target_link_libraries(version_test CppUTest::CppUTest  Celix::utils 
pthread)
+        target_link_libraries(version_test CppUTest::CppUTest utils_cut 
pthread)
 
 
         if (LINKER_WRAP_SUPPORTED)
             add_executable(version_ei_test private/test/version_ei_test.cc)
             target_include_directories(version_ei_test PRIVATE 
include_deprecated)
-            target_link_libraries(version_ei_test CppUTest::CppUTest 
Celix::utils_obj Celix::malloc_ei Celix::utils_ei pthread)
+            target_link_libraries(version_ei_test CppUTest::CppUTest utils_cut 
Celix::malloc_ei Celix::utils_ei pthread)
             add_test(NAME version_ei_test COMMAND version_ei_test)
         endif ()
 
diff --git a/libs/utils/gtest/CMakeLists.txt b/libs/utils/gtest/CMakeLists.txt
index 2d8a47f5..a6fc427c 100644
--- a/libs/utils/gtest/CMakeLists.txt
+++ b/libs/utils/gtest/CMakeLists.txt
@@ -36,7 +36,7 @@ add_executable(test_utils
         ${CELIX_UTIL_TEST_SOURCES_FOR_CXX_HEADERS}
 )
 
-target_link_libraries(test_utils PRIVATE Celix::utils GTest::gtest 
GTest::gtest_main libzip::libzip)
+target_link_libraries(test_utils PRIVATE utils_cut GTest::gtest 
GTest::gtest_main libzip::libzip)
 target_include_directories(test_utils PRIVATE ../src) #for version_private 
(needs refactoring of test)
 celix_deprecated_utils_headers(test_utils)
 
@@ -84,7 +84,7 @@ if (LINKER_WRAP_SUPPORTED)
             src/IpUtilsErrorInjectionTestSuite.cc
             src/ArrayListErrorInjectionTestSuite.cc
     )
-    target_link_libraries(test_utils_with_ei PRIVATE Celix::zip_ei 
Celix::stdio_ei Celix::stat_ei Celix::fts_ei Celix::utils_obj Celix::utils_ei 
Celix::ifaddrs_ei Celix::malloc_ei GTest::gtest GTest::gtest_main)
+    target_link_libraries(test_utils_with_ei PRIVATE Celix::zip_ei 
Celix::stdio_ei Celix::stat_ei Celix::fts_ei utils_cut Celix::utils_ei 
Celix::ifaddrs_ei Celix::malloc_ei GTest::gtest GTest::gtest_main)
     target_include_directories(test_utils_with_ei PRIVATE ../src) #for 
version_private (needs refactoring of test)
     celix_deprecated_utils_headers(test_utils_with_ei)
     add_dependencies(test_utils_with_ei test_utils_resources)
@@ -100,7 +100,7 @@ if (ENABLE_TESTING_FOR_CXX14)
     add_executable(test_utils_cxx_headers_with_cxx14
             ${CELIX_UTIL_TEST_SOURCES_FOR_CXX_HEADERS}
     )
-    target_link_libraries(test_utils_cxx_headers_with_cxx14 PRIVATE 
Celix::utils GTest::gtest GTest::gtest_main)
+    target_link_libraries(test_utils_cxx_headers_with_cxx14 PRIVATE utils_cut 
GTest::gtest GTest::gtest_main)
     add_test(NAME test_utils_cxx_headers_with_cxx14 COMMAND 
test_utils_cxx_headers_with_cxx14)
     setup_target_for_coverage(test_utils_cxx_headers_with_cxx14 SCAN_DIR ..)
 endif ()
diff --git a/libs/utils/src/array_list_private.h 
b/libs/utils/src/array_list_private.h
index 7219387d..9a761433 100644
--- a/libs/utils/src/array_list_private.h
+++ b/libs/utils/src/array_list_private.h
@@ -28,7 +28,6 @@
 #define array_list_t_PRIVATE_H_
 
 #include "array_list.h"
-#include "celix_utils_export.h"
 
 struct celix_array_list {
     celix_array_list_entry_t* elementData;
diff --git a/libs/utils/src/hash_map_private.h 
b/libs/utils/src/hash_map_private.h
index da859e76..2cd6819d 100644
--- a/libs/utils/src/hash_map_private.h
+++ b/libs/utils/src/hash_map_private.h
@@ -27,17 +27,15 @@
 #ifndef HASH_MAP_PRIVATE_H_
 #define HASH_MAP_PRIVATE_H_
 
-#include "celix_utils_export.h"
 #include "hash_map.h"
 
-//note functions used for testing, so export is needed
-CELIX_UTILS_EXPORT  unsigned int hashMap_hashCode(const void* toHash);
-CELIX_UTILS_EXPORT  int hashMap_equals(const void* toCompare, const void* 
compare);
+unsigned int hashMap_hashCode(const void* toHash);
+int hashMap_equals(const void* toCompare, const void* compare);
 
-CELIX_UTILS_EXPORT void hashMap_resize(hash_map_pt map, int newCapacity);
-CELIX_UTILS_EXPORT hash_map_entry_pt hashMap_removeEntryForKey(hash_map_pt 
map, const void* key);
-CELIX_UTILS_EXPORT  hash_map_entry_pt hashMap_removeMapping(hash_map_pt map, 
hash_map_entry_pt entry);
-CELIX_UTILS_EXPORT void hashMap_addEntry(hash_map_pt map, int hash, void* key, 
void* value, int bucketIndex);
+void hashMap_resize(hash_map_pt map, int newCapacity);
+hash_map_entry_pt hashMap_removeEntryForKey(hash_map_pt map, const void* key);
+hash_map_entry_pt hashMap_removeMapping(hash_map_pt map, hash_map_entry_pt 
entry);
+void hashMap_addEntry(hash_map_pt map, int hash, void* key, void* value, int 
bucketIndex);
 
 struct hashMapEntry {
     void* key;

Reply via email to