blob: 56e8e298725f3cd665a91259bb80e97ad23b578e [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
add_executable(test_utils
src/CxxUtilsTestSuite.cc
src/CxxPropertiesTestSuite.cc
src/CxxFilterTestSuite.cc
src/CxxVersionTestSuite.cc
src/LogTestSuite.cc
src/LogUtilsTestSuite.cc
src/VersionRangeTestSuite.cc
src/TimeUtilsTestSuite.cc
src/FileUtilsTestSuite.cc
src/FilterTestSuite.cc
src/CelixUtilsTestSuite.cc
src/ConvertUtilsTestSuite.cc
src/PropertiesTestSuite.cc
src/PropertiesEncodingTestSuite.cc
src/CelixJsonUtilsTestSuite.cc
src/CelixArrayListEncodingTestSuite.cc
src/VersionTestSuite.cc
src/ErrTestSuite.cc
src/ThreadsTestSuite.cc
src/UvThreadsTestSuite.cc
src/CelixErrnoTestSuite.cc
src/CelixUtilsAutoCleanupTestSuite.cc
src/ArrayListTestSuite.cc
src/DeprecatedHashmapTestSuite.cc
src/CxxExceptionsTestSuite.cc
)
target_link_libraries(test_utils PRIVATE utils_cut Celix::utils GTest::gtest GTest::gtest_main libzip::zip libuv::uv)
target_include_directories(test_utils PRIVATE ../src) #for version_private (needs refactoring of test)
celix_deprecated_utils_headers(test_utils)
configure_file(resources/properties.txt ${CMAKE_CURRENT_BINARY_DIR}/resources-test/properties.txt COPYONLY)
if (CELIX_CXX17)
add_library(test_utils_cxx17tests OBJECT
src/HashMapTestSuite.cc #Uses constexpr
)
target_link_libraries(test_utils_cxx17tests PRIVATE utils_cut Celix::utils GTest::gtest)
target_compile_features(test_utils_cxx17tests PRIVATE cxx_std_17)
target_link_libraries(test_utils PRIVATE test_utils_cxx17tests)
endif ()
####### generating zip file used for testing ##########################################################################
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/zip_content/top.properties" CONTENT "{\"level\":1}")
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/zip_content/subdir/sub.properties" CONTENT "{\"level\":2}")
set(TEST_ZIP_FILE "${CMAKE_CURRENT_BINARY_DIR}/test.zip")
if(ZIP_COMMAND)
add_custom_command(OUTPUT ${TEST_ZIP_FILE}
COMMAND ${ZIP_COMMAND} -rq ${TEST_ZIP_FILE} *
COMMENT "Creating ${TEST_ZIP_FILE} for testing"
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/zip_content/top.properties ${CMAKE_CURRENT_BINARY_DIR}/zip_content/subdir/sub.properties
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/zip_content
)
else ()
add_custom_command(OUTPUT ${TEST_ZIP_FILE}
COMMAND ${CMAKE_COMMAND} -E tar cf ${TEST_ZIP_FILE} --format=zip .
COMMENT "Creating ${TEST_ZIP_FILE} for testing"
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/zip_content/top.properties ${CMAKE_CURRENT_BINARY_DIR}/zip_content/subdir/sub.properties
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/zip_content
)
endif ()
add_custom_target(test_utils_resources DEPENDS ${TEST_ZIP_FILE})
add_dependencies(test_utils test_utils_resources)
target_compile_definitions(test_utils PRIVATE -DTEST_ZIP_LOCATION=\"${TEST_ZIP_FILE}\")
target_compile_definitions(test_utils PRIVATE -DTEST_A_FILE_LOCATION=\"${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt\")
target_compile_definitions(test_utils PRIVATE -DTEST_A_DIR_LOCATION=\"${CMAKE_CURRENT_SOURCE_DIR}\")
####### linking zip against test executable to text extract zip from data ###############################################
if (UNIX AND NOT APPLE)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/embed_zip_linux.s.in ${CMAKE_BINARY_DIR}/embed_zip_linux.s @ONLY)
target_sources(test_utils PRIVATE ${CMAKE_BINARY_DIR}/embed_zip_linux.s)
else ()
target_link_libraries(test_utils PRIVATE -Wl,-sectcreate -Wl,resources -Wl,test_zip -Wl,${TEST_ZIP_FILE})
endif ()
add_test(NAME test_utils COMMAND test_utils)
setup_target_for_coverage(test_utils SCAN_DIR ..)
if (EI_TESTS)
#Note testing celix err separated, otherwise celix err tss can already be initialized by another util function
add_executable(test_utils_celix_err_with_ei
src/ErrErrorInjectionTestSuite.cc
)
target_link_libraries(test_utils_celix_err_with_ei PRIVATE
utils_cut
Celix::malloc_ei
Celix::threads_ei
GTest::gtest GTest::gtest_main
)
add_test(NAME test_utils_celix_err_with_ei COMMAND test_utils_celix_err_with_ei)
setup_target_for_coverage(test_utils_celix_err_with_ei SCAN_DIR ..)
#Note testing version seperated, otherwise version calls are already wrapped
add_executable(test_utils_version_with_ei
src/VersionErrorInjectionTestSuite.cc
)
target_link_libraries(test_utils_version_with_ei PRIVATE
utils_cut
Celix::malloc_ei
Celix::asprintf_ei
Celix::utils_ei
GTest::gtest GTest::gtest_main
)
add_test(NAME test_utils_version_with_ei COMMAND test_utils_version_with_ei)
setup_target_for_coverage(test_utils_version_with_ei SCAN_DIR ..)
#Note testing array list seperated, otherwise array list calls are already wrapped
add_executable(test_utils_array_list_with_ei
src/ArrayListErrorInjectionTestSuite.cc
)
target_link_libraries(test_utils_array_list_with_ei PRIVATE
utils_cut
Celix::malloc_ei
Celix::utils_ei
Celix::version_ei
GTest::gtest GTest::gtest_main
)
add_test(NAME test_utils_array_list_with_ei COMMAND test_utils_array_list_with_ei)
setup_target_for_coverage(test_utils_array_list_with_ei SCAN_DIR ..)
add_executable(test_utils_with_ei
src/FileUtilsErrorInjectionTestSuite.cc
src/ConvertUtilsErrorInjectionTestSuite.cc
src/PropertiesErrorInjectionTestSuite.cc
src/HashMapErrorInjectionTestSuite.cc
src/FilterErrorInjectionTestSuite.cc
src/PropertiesEncodingErrorInjectionTestSuite.cc
src/CelixArrayListEncodingErrorInjectionTestSuite.cc
src/CelixJsonUtilsErrorInjectionTestSuite.cc
)
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::threads_ei
Celix::malloc_ei
Celix::asprintf_ei
Celix::string_hash_map_ei
Celix::long_hash_map_ei
Celix::version_ei
Celix::array_list_ei
Celix::jansson_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)
target_compile_definitions(test_utils_with_ei PRIVATE -DTEST_ZIP_LOCATION=\"${TEST_ZIP_FILE}\")
target_compile_definitions(test_utils_with_ei PRIVATE -DTEST_A_DIR_LOCATION=\"${CMAKE_CURRENT_SOURCE_DIR}\")
add_test(NAME test_utils_with_ei COMMAND test_utils_with_ei)
setup_target_for_coverage(test_utils_with_ei SCAN_DIR ..)
endif ()