memcheck.cmake 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. # Initialize global vars with values came from outside (from gitlab-ci)
  2. # This is main test suite which runs all the tests.
  3. set ( CI_PROJECT_DIR "$ENV{CI_PROJECT_DIR}" )
  4. set ( CTEST_BUILD_NAME "$ENV{CI_COMMIT_REF_NAME}" )
  5. set ( CTEST_CONFIGURATION_TYPE "$ENV{CTEST_CONFIGURATION_TYPE}" )
  6. set ( CTEST_CMAKE_GENERATOR "$ENV{CTEST_CMAKE_GENERATOR}" )
  7. set ( LIBS_BUNDLE "$ENV{LIBS_BUNDLE}" )
  8. set ( CTEST_REGEX "$ENV{CTEST_REGEX}" )
  9. set ( SEARCHD_CLI_EXTRA "$ENV{SEARCHD_CLI_EXTRA}" )
  10. set ( XTRA_FLAGS "$ENV{XTRA_FLAGS}" )
  11. set ( NO_TESTS "$ENV{NO_TESTS}" )
  12. set ( UNITY_BUILD "$ENV{UNITY_BUILD}" )
  13. set_property ( GLOBAL PROPERTY Label P$ENV{CI_PIPELINE_ID} J$ENV{CI_JOB_ID} )
  14. if (NOT CTEST_CMAKE_GENERATOR)
  15. set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
  16. endif ()
  17. # platform specific options
  18. set ( CTEST_SITE "$ENV{CI_SERVER_NAME} ${CTEST_CONFIGURATION_TYPE}" )
  19. # fallback to run without ctest
  20. if ( NOT CTEST_SOURCE_DIRECTORY )
  21. set ( CTEST_SOURCE_DIRECTORY ".." )
  22. endif ()
  23. # just reference line for manual configuration
  24. # cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWITH_ODBC=1 -DWITH_RE2=1 -DWITH_STEMMER=1 -DWITH_POSTGRESQL=0 -DWITH_EXPAT=1 -DWITH_SSL=1 -DTEST_SPECIAL_EXTERNAL=1 -DDISABLE_MEMROUTINES=1 -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 ..
  25. # common test options
  26. set ( CONFIG_OPTIONS "WITH_ODBC=1;WITH_RE2=1;WITH_STEMMER=1;WITH_POSTGRESQL=0;WITH_EXPAT=1;WITH_SSL=1;TEST_SPECIAL_EXTERNAL=1;DISABLE_MEMROUTINES=1;DISABLE_PERFETTO=1" )
  27. if (UNITY_BUILD)
  28. LIST ( APPEND CONFIG_OPTIONS "CMAKE_UNITY_BUILD=${UNITY_BUILD}" )
  29. endif ()
  30. set ( CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/build" )
  31. if ( LIBS_BUNDLE )
  32. LIST ( APPEND CONFIG_OPTIONS "LIBS_BUNDLE=${LIBS_BUNDLE}" )
  33. endif ()
  34. if ( SEARCHD_CLI_EXTRA )
  35. LIST ( APPEND CONFIG_OPTIONS "SEARCHD_CLI_EXTRA=${SEARCHD_CLI_EXTRA}" )
  36. endif()
  37. SET ( CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE )
  38. #ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY})
  39. #######################################################################
  40. if ($ENV{CDASH_UPLOAD})
  41. configure_file ("$ENV{CDASH_UPLOAD}" "${CTEST_BINARY_DIRECTORY}/CTestConfig.cmake" COPYONLY)
  42. endif()
  43. # configure memcheck
  44. SET ( WITH_MEMCHECK TRUE )
  45. find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
  46. get_filename_component (CTEST_MEMORYCHECK_SUPPRESSIONS_FILE "${CTEST_SOURCE_DIRECTORY}/test/valgrind.supp" ABSOLUTE)
  47. # configure update (will log git rev id)
  48. find_program ( CTEST_GIT_COMMAND NAMES git )
  49. SET ( CTEST_UPDATE_COMMAND "${CTEST_GIT_COMMAND}" )
  50. SET ( CTEST_UPDATE_VERSION_ONLY ON )
  51. set ( CMAKE_CALL "${CMAKE_COMMAND} \"-G${CTEST_CMAKE_GENERATOR}\" -DCMAKE_BUILD_TYPE:STRING=${CTEST_CONFIGURATION_TYPE}" )
  52. foreach ( OPTION ${CONFIG_OPTIONS} )
  53. set ( CMAKE_CALL "${CMAKE_CALL} -D${OPTION}" )
  54. endforeach ()
  55. foreach (OPTION ${XTRA_FLAGS})
  56. set ( CMAKE_CALL "${CMAKE_CALL} -D${OPTION}" )
  57. endforeach ()
  58. set ( CTEST_CONFIGURE_COMMAND "${CMAKE_CALL} \"${CTEST_SOURCE_DIRECTORY}\"" )
  59. # will not write and count warnings in auto-generated files of lexer
  60. set ( CTEST_CUSTOM_WARNING_EXCEPTION ".*flexsphinx.*" )
  61. # Do the test suite
  62. ctest_start ( "Continuous" )
  63. ctest_configure ()
  64. ctest_build ()
  65. if (NO_TESTS)
  66. return ()
  67. endif ()
  68. if ( WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND )
  69. set (ENV{vlg} "${CTEST_MEMORYCHECK_COMMAND}")
  70. get_filename_component (CTEST_MEMORYCHECK_COMMAND "${CTEST_SOURCE_DIRECTORY}/valgrind" ABSOLUTE)
  71. if ($ENV{MEMORYCHECK_COMMAND_OPTIONS})
  72. set(CTEST_MEMORYCHECK_COMMAND_OPTIONS "$ENV{MEMORYCHECK_COMMAND_OPTIONS}")
  73. endif ()
  74. # set (CTEST_MEMORYCHECK_COMMAND_OPTIONS "-q --tool=memcheck --leak-check=full --show-reachable=yes --num-callers=50 --track-origins=yes")
  75. # set (CTEST_MEMORYCHECK_COMMAND_OPTIONS "-q --tool=memcheck --leak-check=full --show-reachable=no --num-callers=50 --track-origins=yes")
  76. if (CTEST_REGEX)
  77. ctest_memcheck (INCLUDE_LABEL UBER INCLUDE "${CTEST_REGEX}" RETURN_VALUE retcode)
  78. else ()
  79. ctest_memcheck (INCLUDE_LABEL UBER RETURN_VALUE retcode)
  80. endif ()
  81. endif ( WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND )
  82. if ( retcode )
  83. MESSAGE ( STATUS "tests failed with ${retcode} code, but we don't fail as it is memcheck pass" )
  84. endif ()