g3log/test_unit/Test.cmake

105 lines
4.9 KiB
CMake
Raw Normal View History

# g3log is a KjellKod Logger
# 2015 @author Kjell Hedström, hedstrom@kjellkod.cc
# ==================================================================
# 2015 by KjellKod.cc. This is PUBLIC DOMAIN to use at your own
# risk and comes with no warranties.
2014-10-03 08:56:13 +02:00
#
# This code is yours to share, use and modify with no strings attached
# and no restrictions or obligations.
# ===================================================================
2014-10-03 08:56:13 +02:00
# ============================================================================
# TEST OPTIONS: Turn OFF the ones that is of no interest to you
# ---- by default all is OFF: except 'g3log-FATAL-example -----
2014-10-03 08:56:13 +02:00
# ---- the reason for this is that
# ----- 1) the performance tests were only thoroughly tested on Ubuntu, not windows-
# (g3log windows/linux, but Google's glog only on linux)
2014-10-03 08:56:13 +02:00
#
# 2) The unit test were tested windows/linux
2014-10-03 08:56:13 +02:00
# ============================================================================
# Unit test for g3log (cmake -DUSE_G3LOG_UNIT_TEST=ON ..)
option (ADD_G3LOG_UNIT_TEST "g3log unit tests" OFF)
2014-10-03 08:56:13 +02:00
# 4. create the unit tests for g3log --- ONLY TESTED THE UNIT TEST ON LINUX
2014-10-03 08:56:13 +02:00
# =========================
IF (ADD_G3LOG_UNIT_TEST)
# Download and unpack googletest at configure time
configure_file(CMakeLists.txt.in
googletest-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
execute_process(COMMAND ${CMAKE_COMMAND} --build .
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download )
# Prevent GoogleTest from overriding our compiler/linker options
# when building with Visual Studio
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
# Add googletest directly to our build. This adds
# the following targets: gtest, gtest_main, gmock
# and gmock_main
add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src
${CMAKE_BINARY_DIR}/googletest-build)
# The gtest/gmock targets carry header search path
# dependencies automatically when using CMake 2.8.11 or
# later. Otherwise we have to add them here ourselves.
if (CMAKE_VERSION VERSION_LESS 2.8.11)
include_directories("${gtest_SOURCE_DIR}/include"
"${gmock_SOURCE_DIR}/include")
endif()
enable_testing()
2014-10-03 08:56:13 +02:00
set(DIR_UNIT_TEST ${g3log_SOURCE_DIR}/test_unit)
message( STATUS "-DADD_G3LOG_UNIT_TEST=ON" )
2014-10-03 08:56:13 +02:00
# obs see this: http://stackoverflow.com/questions/9589192/how-do-i-change-the-number-of-template-arguments-supported-by-msvcs-stdtupl
# and this: http://stackoverflow.com/questions/2257464/google-test-and-visual-studio-2010-rc
IF (MSVC OR MINGW)
SET(OS_SPECIFIC_TEST test_crashhandler_windows)
ENDIF(MSVC OR MINGW)
Gimesketvirtadien's time requested changes (#104) * Added "removeSink" method and related functionality to LogWorker API * Added a new API for plugging in custom Timestamp generator. * Revert "Added "removeSink" method and related functionality to LogWorker API" This reverts commit c9cee5d9a077ce1e7e68f07cc30d03e4bed19c7b. * Dropping shared_ptr<Timestamp> in log messages and using regular vars * Moving to standard timespec struct from custom Timestamp * Wiring timespec timestamps with formating routine * Falling back to clock_gettime * Reverting g3 API changes * Optimizing format string generation * Removed _microseconds from LogMessage * Implemented sec fractional format key * Optimization of format string generation * Adjusting comments * Refining localtime_formatted by introducing two helper functions * refactored and simplified code * fixed up some commented away unit tests * refactoring message specifics tests to it's own test * Use gcc 4.9 * C++14 for Linux * Update .travis.yml * Update buildAndRunTests.sh * lower case in `-std=c++14` * -lrt flag for gcc * Added support for high precision clock on Linux/gcc (already there now for OSX). Windows is still missing * intermediate comments * Clarified for some code readers the mysterious use of assert in an expression that is always true * refactored + renamed functions and constants. Added unit test for retrieving fractional type * committing changes previously fixed - finished unit testing for g3::internal::time::GetFractional(..) * added unit test for fractional to string * added missing unit tests for localtime_formatted * fixed? nano / microsec functionality to timer * test
2016-08-11 08:27:52 +02:00
SET(tests_to_run test_message test_filechange test_io test_cpp_future_concepts test_concept_sink test_sink ${OS_SPECIFIC_TEST})
2014-10-03 08:56:13 +02:00
SET(helper ${DIR_UNIT_TEST}/testing_helpers.h ${DIR_UNIT_TEST}/testing_helpers.cpp)
include_directories(${DIR_UNIT_TEST})
FOREACH(test ${tests_to_run} )
SET(all_tests ${all_tests} ${DIR_UNIT_TEST}/${test}.cpp )
IF(${test} STREQUAL "test_filechange")
Gimesketvirtadien's time requested changes (#104) * Added "removeSink" method and related functionality to LogWorker API * Added a new API for plugging in custom Timestamp generator. * Revert "Added "removeSink" method and related functionality to LogWorker API" This reverts commit c9cee5d9a077ce1e7e68f07cc30d03e4bed19c7b. * Dropping shared_ptr<Timestamp> in log messages and using regular vars * Moving to standard timespec struct from custom Timestamp * Wiring timespec timestamps with formating routine * Falling back to clock_gettime * Reverting g3 API changes * Optimizing format string generation * Removed _microseconds from LogMessage * Implemented sec fractional format key * Optimization of format string generation * Adjusting comments * Refining localtime_formatted by introducing two helper functions * refactored and simplified code * fixed up some commented away unit tests * refactoring message specifics tests to it's own test * Use gcc 4.9 * C++14 for Linux * Update .travis.yml * Update buildAndRunTests.sh * lower case in `-std=c++14` * -lrt flag for gcc * Added support for high precision clock on Linux/gcc (already there now for OSX). Windows is still missing * intermediate comments * Clarified for some code readers the mysterious use of assert in an expression that is always true * refactored + renamed functions and constants. Added unit test for retrieving fractional type * committing changes previously fixed - finished unit testing for g3::internal::time::GetFractional(..) * added unit test for fractional to string * added missing unit tests for localtime_formatted * fixed? nano / microsec functionality to timer * test
2016-08-11 08:27:52 +02:00
add_executable(test_filechange ${DIR_UNIT_TEST}/${test}.cpp ${helper})
2014-10-03 08:56:13 +02:00
ELSE()
Renamed directories for a cleaner project structure --HG-- rename : g2log/Build.cmake => Build.cmake rename : g2log/CMakeLists.txt => CMakeLists.txt rename : g2log/CPackLists.txt => CPackLists.txt rename : g2log/Dynamic.cmake => Dynamic.cmake rename : g2log/example/Example.cmake => example/Example.cmake rename : g2log/example/main_contract.cpp => example/main_contract.cpp rename : g2log/example/main_sigsegv.cpp => example/main_sigsegv.cpp rename : g2log/src/active.hpp => src/active.hpp rename : g2log/src/crashhandler.hpp => src/crashhandler.hpp rename : g2log/src/crashhandler_unix.cpp => src/crashhandler_unix.cpp rename : g2log/src/crashhandler_win.cpp => src/crashhandler_win.cpp rename : g2log/src/g2filesink.cpp => src/g2filesink.cpp rename : g2log/src/g2filesink.hpp => src/g2filesink.hpp rename : g2log/src/g2filesinkhelper.ipp => src/g2filesinkhelper.ipp rename : g2log/src/g2future.hpp => src/g2future.hpp rename : g2log/src/g2log.cpp => src/g2log.cpp rename : g2log/src/g2log.hpp => src/g2log.hpp rename : g2log/src/g2loglevels.cpp => src/g2loglevels.cpp rename : g2log/src/g2loglevels.hpp => src/g2loglevels.hpp rename : g2log/src/g2logmessage.cpp => src/g2logmessage.cpp rename : g2log/src/g2logmessage.hpp => src/g2logmessage.hpp rename : g2log/src/g2logmessagecapture.cpp => src/g2logmessagecapture.cpp rename : g2log/src/g2logmessagecapture.hpp => src/g2logmessagecapture.hpp rename : g2log/src/g2logworker.cpp => src/g2logworker.cpp rename : g2log/src/g2logworker.hpp => src/g2logworker.hpp rename : g2log/src/g2moveoncopy.hpp => src/g2moveoncopy.hpp rename : g2log/src/g2sink.hpp => src/g2sink.hpp rename : g2log/src/g2sinkhandle.hpp => src/g2sinkhandle.hpp rename : g2log/src/g2sinkwrapper.hpp => src/g2sinkwrapper.hpp rename : g2log/src/g2time.cpp => src/g2time.cpp rename : g2log/src/g2time.hpp => src/g2time.hpp rename : g2log/src/shared_queue.hpp => src/shared_queue.hpp rename : g2log/src/std2_make_unique.hpp => src/std2_make_unique.hpp rename : g2log/src/stlpatch_future.hpp => src/stlpatch_future.hpp rename : g2log/test_performance/Performance.cmake => test_performance/Performance.cmake rename : g2log/test_performance/main_threaded_mean.cpp => test_performance/main_threaded_mean.cpp rename : g2log/test_performance/main_threaded_worst.cpp => test_performance/main_threaded_worst.cpp rename : g2log/test_performance/performance.h => test_performance/performance.h rename : g2log/test_unit/Test.cmake => test_unit/Test.cmake rename : g2log/test_unit/test_concept_sink.cpp => test_unit/test_concept_sink.cpp rename : g2log/test_unit/test_configuration.cpp => test_unit/test_configuration.cpp rename : g2log/test_unit/test_filechange.cpp => test_unit/test_filechange.cpp rename : g2log/test_unit/test_io.cpp => test_unit/test_io.cpp rename : g2log/test_unit/test_linux_dynamic_loaded_sharedlib.cpp => test_unit/test_linux_dynamic_loaded_sharedlib.cpp rename : g2log/test_unit/test_sink.cpp => test_unit/test_sink.cpp rename : g2log/test_unit/tester_sharedlib.cpp => test_unit/tester_sharedlib.cpp rename : g2log/test_unit/tester_sharedlib.h => test_unit/tester_sharedlib.h rename : g2log/test_unit/testing_helpers.cpp => test_unit/testing_helpers.cpp rename : g2log/test_unit/testing_helpers.h => test_unit/testing_helpers.h
2014-10-03 09:20:33 +02:00
add_executable(${test} ${g3log_SOURCE_DIR}/test_main/test_main.cpp ${DIR_UNIT_TEST}/${test}.cpp ${helper})
2014-10-03 08:56:13 +02:00
ENDIF(${test} STREQUAL "test_filechange")
set_target_properties(${test} PROPERTIES COMPILE_DEFINITIONS "GTEST_HAS_TR1_TUPLE=0")
set_target_properties(${test} PROPERTIES COMPILE_DEFINITIONS "GTEST_HAS_RTTI=0")
IF( NOT(MSVC))
set_target_properties(${test} PROPERTIES COMPILE_FLAGS "-isystem -pthread ")
ENDIF( NOT(MSVC))
target_link_libraries(${test} g3log gtest_main)
add_test( ${test} ${test} )
2014-10-03 08:56:13 +02:00
ENDFOREACH(test)
#
# Test for Linux, runtime loading of dynamic libraries
#
IF (NOT WIN32 AND NOT ("${CMAKE_CXX_COMPILER_ID}" MATCHES ".*Clang") AND G3_SHARED_LIB)
2014-10-03 08:56:13 +02:00
add_library(tester_sharedlib SHARED ${DIR_UNIT_TEST}/tester_sharedlib.h ${DIR_UNIT_TEST}/tester_sharedlib.cpp)
target_link_libraries(tester_sharedlib ${G3LOG_LIBRARY})
2014-10-03 08:56:13 +02:00
add_executable(test_dynamic_loaded_shared_lib ${g3log_SOURCE_DIR}/test_main/test_main.cpp ${DIR_UNIT_TEST}/test_linux_dynamic_loaded_sharedlib.cpp)
2014-10-03 08:56:13 +02:00
set_target_properties(test_dynamic_loaded_shared_lib PROPERTIES COMPILE_DEFINITIONS "GTEST_HAS_TR1_TUPLE=0")
set_target_properties(test_dynamic_loaded_shared_lib PROPERTIES COMPILE_DEFINITIONS "GTEST_HAS_RTTI=0")
target_link_libraries(test_dynamic_loaded_shared_lib ${G3LOG_LIBRARY} -ldl gtest_main)
2014-10-03 08:56:13 +02:00
ENDIF()
ELSE()
message( STATUS "-DADD_G3LOG_UNIT_TEST=OFF" )
ENDIF (ADD_G3LOG_UNIT_TEST)