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;